我正在编写一个从文件中读取数据的程序:
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;
}
如何获得每行的每个字母总数?谢谢大家。
答案 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;
}