将元素添加到二维数组C ++中

时间:2016-11-01 23:35:12

标签: c++ arrays elements

我正在编写此代码,其中我用文件中的信息填充二维数组。这是文件:

5 

Franks,Tom 2 3 8 3 6 3 5 

Gates,Bill 8 8 3 0 8 2 0 

Jordan,Michael 9 10 4 7 0 0 0 

Bush,George  5 6 5 6 5 6 5 

Heinke,Lonnie  7 3 8 7 2 5 7

现在数字出现在数组中:data[50][8]

我还总计了我所做的每一行中的所有数字。我想将此总数添加到数据数组中,使其看起来像2 3 8 3 6 5 3 30。我该怎么做呢? 如果你想看到它,这就是我的所有代码:

int main()
{

    ifstream fin;
    char ch;
    int data[50][8];
    string names[50];

    fin.open("empdata.txt");

    int sum = 0;
    int numOfNames;
    fin >> numOfNames;

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

        fin >> names[i];

        for (int j = 0; j < 7; j++) {
            fin >> data[i][j];
        }
            }

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

            for (int j = 0; j < 7; j++)
            {
                sum += data[i][j];

            }
            cout << sum << endl;
            sum = 0;
        }
}

这是c650帮助我的新代码。它现在没有输出任何东西: int main() {

ifstream fin;
char ch;
int data[50][8];
string names[50];

fin.open("empdata.txt");

int sum = 0;
int numOfNames;
fin >> numOfNames;

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

    fin >> names[i];

    data[i][7] = 0;

    for (int j = 0; j < 7; j++) {
        fin >> data[i][j];
        data[i][7] += data[i][j];
    }
}

for (int i = 0; i < numOfNames; i++)
{
    cout << data[i][7] << endl;

}



system("pause");
return 0;

}

2 个答案:

答案 0 :(得分:1)

以下似乎就是您要做的事情。我将指出你所呈现的代码中的缺陷。

这不是最好的方法,但根据OP,存在一些限制,例如无法使用STL。

ffmpeg -i big_buck_bunny_480p_30mb.mp4 -r 1/1 pipe:1

OP遇到了没有输出的问题。 OP,您必须确保您的输入文件具有正确的名称......

答案 1 :(得分:0)

正如我在其他类似帖子中回答的那样:使用结构对记录进行建模。

struct Record
{
  std::string last_name;
  std::string first_name;
  unsigned int grades[MAXIMUM_GRADES];
};

这允许您拥有一组混合类型:

Record student_info[MAXIMUM_STUDENTS];

要更轻松地从文件中读取,您可以在结构中重载operator>>

struct Record
{
  //...
  friend std::istream& operator>>(std::istream& input, Record& r);
};

std::istream& operator>>(std::istream& input, Record r)
{
  std::getline(input, r.last_name, ',');
  std::getline(input, r.first_name, ' ');
  for (unsigned int i = 0; i < MAXIMUM_GRADES; ++i)
  {
    input >> r.grades[i];
  }
  return input;
}

这简化了您的输入循环:

for (unsigned int i = 0; i < MAXIMUM_STUDENTS; ++i)
{
  my_data_file >> student_info[i];
}

太糟糕了,你无法使用std::vectorstd::vector非常适合从文件中读取,尤其是当您不知道文件的大小时