gpt4 book ai didi

c++ - 当我尝试写入二维数组时出现未处理的异常

转载 作者:行者123 更新时间:2023-11-30 01:15:51 27 4
gpt4 key购买 nike

所以出于某种原因,我一直收到“未处理的异常,你想破解代码吗?”每当我运行它时,就像它认为我要走出阵列一样。这是完整的代码,我会在下面发布它中断的部分:

Header file:

struct mult_div_values
{
int mult;
float div;
};

void create_table(mult_div_values ** table, int rows, int columns)
{
table = new mult_div_values * [rows];
for (int i = 0; i < columns; i++)
{
table[i] = new mult_div_values [columns];
}
}

void set_mult_values(mult_div_values ** table, int rows, int columns)
{
mult_div_values TableValues;
TableValues.div = 0;
for (int i = 0; i < rows; i++)
{
TableValues.mult = i+1;
table[0][i] = TableValues;
}

for (int i = 1; i < rows; i++)
for (int x = 0; x < columns; x++)
{
if (x == 0)
{
TableValues.mult = i + 1;
table[i][x] = TableValues;
}
else
{
TableValues.mult = (i+1) * (x + 1);
table[i][x] = TableValues;
}
}
};

void set_div_values(mult_div_values ** table, int rows, int columns)
{
mult_div_values TableValues;
for (float i = 0; i < rows; i++)
{
TableValues.div = i+1;
table[0][static_cast<int>(i)] = TableValues;
}

for (float i = 1; i < rows; i++)
for (float x = 0; x < columns; x++)
{
if (x == 0)
{
TableValues.div = i + 1;
table[static_cast<int>(i)][static_cast<int>(x)] = TableValues;
}
else
{
TableValues.div = (i+1) / (x + 1);
table[static_cast<int>(i)][static_cast<int>(x)] = TableValues;
}
}
};

源文件:

#include <iostream>
#include "mult_div.h"

using namespace::std;

struct mult_div_values;

int main()
{
mult_div_values ** table = 0;
int rows, columns, rowswanted, columnswanted;
cout << "How many rows?\n";
cin >> rows;
cout << "How many columns?\n";
cin >> columns;
cout << "Which row do you want?\n";
cin >> rowswanted;
cout << "Which column?\n";
cin >> columnswanted;

create_table(table, rows, columns);
set_mult_values(table, rows, columns);
set_mult_values(table, rows, columns);

cout << "Mult value: " << table[rowswanted][columnswanted].mult << endl << "Div value: " << table[rowswanted][columnswanted].div;

system("Pause");
}

它在以下位置中断:

void set_mult_values(mult_div_values ** table, int rows, int columns)
{
mult_div_values TableValues;
TableValues.div = 0;
for (int i = 0; i < rows; i++)
{
TableValues.mult = i+1;
table[0][i] = TableValues; }

当我点击最后一行时,它会给我一条错误消息。有什么想法吗?

最佳答案

您在创建数组的函数中迭代不正确:

void create_table(mult_div_values ** table, int rows, int columns)
{
table = new mult_div_values * [rows];
for (int i = 0; i < columns; i++)
// ^^^^^^^
{
table[i] = new mult_div_values [columns];
}
}

循环应该超过,而不是

此外,在集合中:

void set_mult_values(mult_div_values ** table, int rows, int columns)
{
mult_div_values TableValues;
TableValues.div = 0;

for (int i = 0; i < rows; i++)
{
TableValues.mult = i+1;
table[0][i] = TableValues;
// ^^^
}

..
}

那里的 i 对应于一个列索引,但您要迭代到 。因此,要么应该是 table[i][0] = TableValues,要么循环应该遍历 columns

关于c++ - 当我尝试写入二维数组时出现未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27830546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com