【发布时间】:2017-04-06 21:11:50
【问题描述】:
我需要一些帮助来解决问题。
我有这个文本文件:
我将文本的内容输入到字符串二维数组中,并将其转换为整数二维数组。当我转换为 int 数组时,nan 被替换为零。我现在开始找到二维数组中每一行的最大值和最小值,并找到两者的平均值,我成功地做到了。我的问题是我想为每行找到的平均值分配为零。我尝试使用两个 for 循环,但它用第一行的平均值替换了所有零。谁能帮帮我。
我的代码:
int min = 200;
int main() {
fstream imagefile;
imagefile.open("Text.txt");
if (imagefile.fail()) { // checking for errors in file
cerr << "Error opening file" << endl;
exit(1);
std::string data[3][11];
int integer[3][11];
for (int k = 0; k < 3; k++) {
for (int i = 0; i < 11; i++) {
imagefile >> data[k][i]; // read from file
}
}
cin.get();
for (int k = 0; k < 3; k++) {
for (int i = 0; i < 11; i++)
{
integer[k][i] = atoi(data[k][i].c_str()); // converts string to int
}
}
cin.get();
for (int k = 0; k < 3; k++) { //k is the row and i is the column
for (int i = 0; i < 11; i++) {
cout << integer[k][i] << " ";
}
cout << endl;
}
int row, col;
for (row = 0; row < 3; row++) { //k is the row and i is the column
max = integer[row][0];
min = integer[row][0];
for (col = 0; col < 11; col++) {
if (integer[row][col] > max) { max = integer[row][col]; }
if ((integer[row][col] < min) && (integer[row][col] != 0)) { min = integer[row][col]; }
//if (integer[row][col] == 0) { avg == integer[row][col]; }
sum = max + min;
avg = sum / 2;
}
for (int k = 0; k < integer[k][i]; k++) { //k is the row and i is the column
for (int i = 0; i < 11; i++) {
if (integer[k][i] == 0) {
integer[k][i] = avg;
}
cout << integer[k][i] << " ";
}
cout << endl;
}
cout << max << " ";
cout << min << " ";
cout << avg << " " << endl;
}
imagefile.close();
system("pause");
return 0;
}
【问题讨论】:
-
您的最后一行似乎有两个 0,您想为它们分配平均值还是只为其中一个分配平均值?
-
除0外的最小值对吗?
-
好的!我对代码进行了注释,希望能帮助你理解。
标签: c