求和2D行数组的行

时间:2015-11-09 03:28:22

标签: c++ arrays multidimensional-array

我正在编写一个从文件中读取数据的程序:

W Z W Y W Y W W Y W Y Z W Z Y
Z W W W Y W Y W Z Y W Z W Y Y  
Z W Z Z Y Z Z W W W Y Y Y Z W
Z W Z Z Y Z Z W W W Y Y Y Z W 
Z W Z Z Y Z Z W W W Y Y Y Z W 

我将这些字符存储在2D数组中,我需要在每一行上获取Ws,Zs和Ys的总数,但是我的代码打印出的总数为整个文件中的每个字母,而不是每行的总数:

#include <iostream>
#include <fstream>

using namespace std;

int main() 
{
    ifstream in;
    in.open("file.txt");

    const int A_ROWS = 5, A_COLUMNS = 15;

    char items[A_ROWS][A_COLUMNS];

    // load 2D array with contents from file.
    for (int rows = 0; rows < A_ROWS; rows++)
    {
        for (int columns = 0; columns < A_COLUMNS; columns++)
        {    
            in >> items[rows][columns];
        }
    }

    //set counter for one letter
    int W = 0;
    for (int rows = 0; rows < A_ROWS; rows++)
    {
        for (int columns = 0; columns < A_COLUMNS; columns++)
        {    
            if (items[rows][columns] == 'W')
            {
                W++;
            }
        }
    }

    cout << W; // this prints out the TOTAL amount of Ws in the entire file

    in.close();
    return 0;
}

如何获得每行的每个字母总数?谢谢大家。

2 个答案:

答案 0 :(得分:1)

  

如何获得每行的每个字母总数?谢谢大家。

创建三个数组以跟踪每行中字母的数量。

W

保留数组中字母的数量而不是单个变量。

对于if (items[rows][columns] == 'W') { wCounts[rows]++; } ,它将是:

function renameKeys(arr, nameMap) {
  // loop around our array of objects
  for(var i = 0; i < arr.length; i++) {
    var obj = arr[i];
    // loop around our name mappings
    for(var j = 0; j < nameMap.length; j++) {
       var thisMap = nameMap[j];
       if(obj.hasOwnProperty(thisMap.from)) {
         // found matching name
         obj[thisMap.to] = obj[thisMap.from];
         delete obj[thisMap.from];
       }
    }
  }
}

答案 1 :(得分:1)

因此,您只需移动W输出并重置为外循环:

//set counter for one letter
int W;
for (int rows = 0; rows < A_ROWS; rows++)
{
    W = 0;

    for (int columns = 0; columns < A_COLUMNS; columns++)
    {    
        if (items[rows][columns] == 'W')
        {
            W++;
        }
    }

    cout << "Row " << rows << ": " << W << endl;
}