#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void main(){
int numstud=0, numcorrect, i, j, grid[20][5]={0}, x;
string key, id, responses;
ifstream keyfin, studfin;
keyfin.open("answers.dat");
studfin.open("tests.dat");
keyfin >> key;
studfin >> id >> responses;
cout << setw(5) << "Student-Id's" << setw(20) << "# Correct" << endl << endl;
while(!studfin.eof())
{
numstud++;
numcorrect=0;
for(i=0; i<20; i++){
if(responses[i] == key[i])
{
numcorrect++;
}
if(responses[i] == 'A')
grid[i][0]++;
else if(responses[i] == 'B')
grid[i][1]++;
else if(responses[i] == 'C')
grid[i][2]++;
else if(responses[i] == 'D')
grid[i][3]++;
else
grid[i][4]++;
}
cout << id << setw(20) <<numcorrect << endl;
studfin >> id >> responses;
}
cout << endl << endl << endl << endl;
cout << "Questions" << setw(16) << "A" << setw(5) << "B" << setw(5) << "C" << setw(5) << "D" << setw(5) << "E" << endl;
for(j=0; j<20; j++){
cout << endl << setw(5) << j+1 << setw(20);
for(i=0; i<5; i++)
if(grid[i] == key[i])
cout << grid[j][i] << "*" << setw(5);
else
cout << grid[j][i] << " " << setw(5);
}
cout << endl;
system("Pause");
}
这是一个非常简单的问题,希望是一个非常简单的答案,我需要将grid [i]与key [i]进行比较,以便我可以检查格式是否有所不同,具体取决于它是否==或!=
我的问题是网格是一个int而key是一个字符串。您如何比较这两个if
else
操作数?
答案 0 :(得分:0)
使用string
int
转换为std::stoi()
if(grid[i] == stoi(key[i]))
答案 1 :(得分:0)
grid
是一个2D数组,因此if(grid[i] == key[i])
是错误的。更改为if(grid[j][i] == (key[i]) - '0')
。
grid[i]
表示grid[i][0] (&grid[i][0]
的地址,因此比较它们是不合理的。
key[i]
是char类型,atoi
需要参数为const char *
,因此使用atoi
不正确。通过ascii值在char
和int
之间进行比较是最有效的方法。 key[i] - '0'
将char
到int
值的数字投射出来。