J'ai un programme de devoirs sur lequel j'ai besoin d'aide. J'ai besoin de comparer un tableau contenant la clé de réponse d'un test à un tableau contenant les réponses des étudiants. Le problème que je rencontre est que je dois prendre en compte les réponses vides. Je n'arrive pas à trouver un code qui compare les tableaux, puis affiche le score. Le test est noté 2 points pour une réponse correcte, moins 1 point pour une réponse incorrecte et zéro point pour une réponse vide.Comparer des éléments de tableau en C++
Ceci est un exemple de l'entrée:
TTFTFTTTFTFTFFTTFTTF
ABC54102 T FTFTFTTTFTTFTTF TF
La première ligne est la clé, la deuxième ligne est la première ligne de données d'étudiant.
C'est le code que j'ai:
#include <cmath>
#include <fstream>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
int checkAnswers(char key[], char answers[]);
void displayGrade(int score);
int main()
{
ifstream inFile;
int score = 0;
char key[21];
string studentID;
char answers[21];
int studentCount;
inFile.open("Ch9_Ex6Data.txt"); //opens input file
if (!inFile) //sets condition for if input file does not exist
{
cout << "Unable to locate file." << endl; //informs user that input file is missing
cout << "Program terminating." << endl; //informs user that program is terminating
return 1; //terminates program with error
}
inFile.getline(key, 21);
cout << "Processing Data..." << endl << endl;
cout << "Key: " << key << endl << endl;
while (inFile >> studentID)
{
cout << studentID;
inFile.getline(answers, 22);
cout << answers << " ";
score = checkAnswers(key, answers); //calls checkAnswer function and sets result equal to score
displayGrade(score);
}
return 0;
}
//User-defined Function 1
int checkAnswers(char key[], char answers[])
{
//Function Variables
int i, length; //declares i variable
int correct = 0, incorrect = 0, blank = 0, score = 0; //declares and initializes correct, incorrect, blank, and score variables
answers >> length;
for (i = 0; i < 22; i++) //initiates conditions for for loop
{
if (answers[i] == ' ') //initiates if condition
{
i++;
}
else if (key[i] == answers[i]) //initiates if condition
{
correct++; //sets condition for correct answers
}
else if (key[i] != answers[i]) //initiates if condition
{
incorrect++; //sets condition for incorrect answers
}
score = 40 - incorrect; //calculates score
}
cout << score << " "; //output student score
return score; //pass score
}
Modifier des éclaircissements: j'ai besoin du code pour afficher comme ceci:
clé: TTFTFTTTFTFTFFTTFTTF
ABC54102 T FTFTFTTTFTTFTTF TF 27 D
ADE62366 TTFTFTTTFTFTFFTTF__ 34 B (avec le _ étant des espaces)
La façon dont il affiche est comme ceci:
clé: TTFTFTTTFTFTFFTTFTTF
ABC54102 T FTFTFTTTFTTFTTF TF 27 D
ADE62366 TTFTFTTTFTFTFFTTF 34 B
Ce qui, je pense, est un problème d'alignement, depuis que j'ai tweeté le code maintenant.
Quoi, si quelque chose est votre question? Qu'est-ce qui fonctionne, ne fonctionne pas, etc? – deinst
Veuillez indiquer un problème ou une question. Si votre code ne compilera pas - donnez le message d'erreur que vous obtenez. Si elle compile mais ne fonctionne pas correctement, donnez votre comportement attendu et le comportement réel. –
En outre, vos commentaires devraient dire pourquoi quelque chose se passe. Le lecteur peut voir qu'une déclaration comme 'int i;' déclare 'i', il/elle ne sait pas ce que' i' représente. De même avec les instructions if, pourquoi faites-vous les comparaisons? – deinst