【问题标题】:2D Array and File Handling [C++]二维数组和文件处理 [C++]
【发布时间】:2014-09-25 15:58:45
【问题描述】:

背景:

我正在尝试读取二维数组并找到与行号和列号一致的值。

问题:

如何从文件中读取值并获取例如 1 和 4 与 14?

这是我目前所拥有的......

欢迎所有建设性的批评。

int arrayOfNum[5][5] = {
    {34,21,32,41,25},
    {14,42,43,14,31},
    {54,45,52,42,23},
    {33,15,51,31,35},
    {21,52,33,13,23}};

ofstream arrayFile;
arrayFile.open("arrays.txt");

if (arrayFile.is_open()) {
    cout << "File opened successfully..." << endl;
}

for (int i = 0; i <= 4; i++) {

    arrayFile << endl;

    for (int j = 0; j <= 4; j++) {

        arrayFile << arrayOfNum[j][i] << ' ';
    }
}

【问题讨论】:

  • 来自std::ifstream,您可以使用operator &gt;&gt;...
  • 从 ofstream 中读取 ??你确定吗?
  • 你有输出操作符&lt;&lt; 用于写入,你认为你会用什么操作符从输入文件流中读取?提示:如果您在任何时候使用过std::cin,那么您已经知道该怎么做。
  • 我不确定问题是什么。是关于如何从文件中读取数据,或者是关于如何进行适当的数据布局以检索例如矩阵的维数?
  • 我正在尝试将二维数组输出到文件,然后读取值并将它们分配给变量。主要目标是在数组上找到一个值,例如“25”,检查“25”是否在第 2 行第 5 列...如果不是,则程序转到第 2 行第 5 列并检查该数字,直到找到行和列与数组中的值一致的数字。我需要在文件中将“25”读取为 2 和 5。

标签: c++ arrays file file-io multidimensional-array


【解决方案1】:

您在编写“arrayOfNum[j][i]”时在列中编写行,但我正在编写正确方向的代码。您可以在以下代码中更改条件,但如果您在 'array.txt' 中输出时编写“arrayOfNum[i][j]”,它会完美运行

ifstream arrayFile;
arrayFile.open("arrays.txt");
for (int i = 0; i <= 4; i++)
{
    for (int j = 0; j <= 4; j++)
    {
        arrayFile >> arrayOfNum[i][j];
        cout<<arrayOfNum[i][j]<<" ";
        if(i+1 == arrayOfNum[i][j] / 10 && j+1 == arrayOfNum[i][j] % 10)
        {
            cout<<"\n Matched: "<<arrayOfNum[i][j]<<endl;
        }
    }
    cout<<endl;
}

是的,它只适用于 2 位数字,如果你想要 N 位数字,我也可以为你做! :)

【讨论】:

  • 这是一个很好的答案,但应该解释使用的运算符。除法给你第一个数字。 % 是模数运算符,它会给你第二个数字。
  • 您使用 ifstream 类作为 arrayFile,这是否意味着它只是一个输入文件?我是否仍然能够从文件中获取值并将变量分配给它们,还是应该将类切换到 fstream?最后一件事,我可以得到一个通用公式来说明你在 if 语句中所做的事情吗?您是否只是除以 10 并使用模数,因为它是 2 位数?
  • 1- 是的 'ifstream' 类只能从文件中输入数据。 2-显然,如果您使用“ifstream”输入,则可以使用“arrayFile>>variableName;”从文件中一一获取值这意味着您将从文件中获取的值分配给“variableName”变量。我不明白你为什么问这个问题,我想你想问“我还能写文件吗?”。如果你是这个意思,你可以再问我一次。 3-并确保您可以在 if 语句中制作这样的通用公式: (log10(arrayOfNum[i][j])*10) 您需要 #include 其中 log10 将为您提供 (numberOfDigits-1 )
  • 但是如果你的数字超过 99 即 100、101、102...,你应该确定每个数字的含义是什么
  • 好棒!谢谢阿里,非常感谢兄弟的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-07-13
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多