为什么在矩阵中指定一个点时,它会为整列指定值? 我试图让它只在那时分配。目前我正在自学我计算机科学课的第二部分,所以我正在玩这个。 我的文件只是指定矩阵的大小。 IT编译,没有运行时错误。 我正在使用代码块。有更好的IDE吗?
我的sample.txt文件现在抓取两个数字3和5。 我试图理解,所以我可以实现文件的其余部分,将值放在矩阵中的正确点。
#include <iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{
// variable initialition
string fileName;
int value;
int row=0,col=0; //for size of array
int a[row][col];
int row2,col2; // for putting values in array
fileName="sample.txt";
ifstream input;
input.open("sample.txt");
if (!input)
{
cout<<"ERROR: BAD FILE";
}
input>>row;
input>>col;
cout<<" ROW :"<<row<<endl;
cout<< " COL :"<<col<<endl;
for (int indexRow=0; indexRow<row; indexRow++)
{
for (int indexCol=0; indexCol<col; indexCol++)
{
a[indexRow][indexCol]=0;
}
}
a[0][1]=232;
for (int row2=0; row2<row; row2++)
{
for (int col2=0; col2<col; col2++)
{
cout<<a[row2][col2]<<" ";
}
cout<<endl;
}
input.close();
return 0;
}
答案 0 :(得分:2)
动态数组并不像C ++那样简单。您使用的语法仅用于创建固定大小的数组。在这种情况下,您需要创建具有常量非零值的2D数组,如下所示:
int a[10][10];
此外,
input>>row;
input>>col;
...绝对不会自动调整阵列大小。
你应该避免使用原始数组,并考虑使用矢量矢量作为2D数组:
std::vector<std::vector<int>> a;
有关动态数组的更多选择和讨论,请查看以下问题:
How do I best handle dynamic multi-dimensional arrays in C/C++