从文件中获取矩阵并将其分配给具有最大大小的数组
Posted
技术标签:
【中文标题】从文件中获取矩阵并将其分配给具有最大大小的数组【英文标题】:Getting a Matrix from a file and assigning it to an array with a max size 【发布时间】:2010-11-02 01:57:38 【问题描述】:好的,所以我有一个数组 a[maxsize] [maxsize]
其中maxsize=10
从小于最大大小的文件中获取数组时如何让数组正常工作。
示例矩阵:
1 2 3
4 5 6
7 8 9
出来了:
1 2 3 4 5 6 7 8 9
我的代码: `int main() 常量 int maxsize = 10; double original_matrix[maxsize][maxsize], transposed_matrix[maxsize][maxsize];
ifstream fin;
ofstream fout;
fin.open ("input.txt");
if (fin.fail())
cout << "Input file opening failed. \n";
return 0;
for(i=0; i<maxsize; i++)
for(j=0; j<maxsize; j++)
fin >> original_matrix [i][j];
transpose(original_matrix[][maxsize], transposed_matrix[][maxsize],maxsize)
return 0;
我希望数组像这样分配它
M [0] [0]=1 M [0] [1]=2 M [0] [2]=3
M [1] [0]=4 M [1] [1]=5 M [1] [2]=6
M [2] [0]=7 M [2] [1]=8 M [2] [2]=9
不是
M [0] [0]=1 M [0] [1]=1 M [0] [2]=1 M [0] [3]=1 M [0] [4]=1 M [0] [5]=1 M [0] [6]=1 M [0] [7]=1 M [0] [8]=1
.....等等
文本文件如下所示:
2
1 0
0 1
3
8 9 1
3 5 2
-2 3 -1
0
【问题讨论】:
您需要发布一些代码以使其易于理解。 @Steve Townsend - 是的,给我几分钟,因为我没有太多时间,因为我从文件中读取矩阵时卡住了。 你可以直接将它们读入一维数组,取平方根,然后使用[x + y * n]
这样做是为了获得移动到二维数组的大小?
您的输入文件的格式是什么?矩阵的每一行是单独一行,还是所有内容都在一行?
【参考方案1】:
如果你想让矩阵以矩阵形式出现,你为什么不呢:
for(i=0; i<maxsize; i++)
for(j=0; j<maxsize; j++)
fin >> original_matrix [i][j];
cout << "\n"
这样它就以一个盒子的形式出现,而不是单行。我认为你还必须使用 maxsize,因为你希望它是一个没有空的矩阵,所以你应该检查有多少向量组成矩阵,并将其用作条件(而不是 maxsize)
edit - 输入文件伪代码
所以第一行是一个数字,它告诉使用矩阵将有多少行或列。因此,该程序将假定它是一个方阵。您想要的条件值是第一行(即 2,3,0)。确保检查该值是否大于 0 且小于 10。解析每个值的输入行,将其注入矩阵。设置条件值,就可以得到一个完美的方阵。
-
打开文件
读取线,是矩阵的长度吗?
* 如果是,则设置为条件
* 如果不是,则为矩阵中的值
检查条件以确保 0
打印。
【讨论】:
这可能是不正确的,因为我看到你再次编辑了它。 唯一的问题是我必须使用 maxsize 并解决这个问题。这样任何用户都不能超过 10X10 的大小,但可以做任何小于或等于这个大小的事情。 是的,所以创建另一个上限为 10 的条件,即 int cond = 0; cond = 3 (在这种情况下,你可以从有多少列中获取),然后检查 if (cond > 10) cout 我有点困惑如何做到这一点,因为用户没有输入它来自文件的数组,所以它已经制作好了。 你能编辑你的帖子并显示文本文件输入的样子吗?以上是关于从文件中获取矩阵并将其分配给具有最大大小的数组的主要内容,如果未能解决你的问题,请参考以下文章
我如何从用户那里接收字符串并将其分配到没有任何中间变量的指针数组中?
如何以字节为单位获取 pdf 的大小并将其分配给 Data 变量?