Affectation d'école. Avoir fondamentalement créer une clé de test pour un examen de conducteur et ensuite valider si oui ou non l'étudiant a réussi l'examen. Les réponses correctes doivent être stockées dans un tableau et les réponses des étudiants et le nom complet doivent être stockés dans un autre tableau à partir de l'entrée de l'utilisateur ainsi que dans un fichier texte. Pendant un moment, j'ai pensé que ce que je faisais était correct jusqu'à ce que j'aille exécuter le programme et j'ai remarqué que peu importe la longueur du tableau, il écrit un étrange caractère avec un accent au-dessus. Il écrit également les bonnes réponses du tableau dans le fichier que je ne veux pas faire. Tout ce que j'ai besoin d'écrire dans le fichier est: (nom complet, réponses des élèves (20), nom complet, réponses des élèves (20), etc.)(C++) Problèmes d'écriture du contenu d'un tableau dans un fichier
La première lettre du fichier est également coupée pour une raison quelconque. (par exemple, "John Doe" devient "ohn Doe") Quelle est la raison de cette erreur? sans l'instruction cin.ignore() je ne sais pas comment obtenir le nom complet dont j'ai besoin dans le fichier.
J'ai défini la taille du tableau en haut comme une constante, ce qui me permet de le remplacer par 4 espaces au lieu de 20 pour un test rapide.
Toute aide est appréciée. Extrêmement nouveau pour la programmation. Profitez-en jusqu'ici juste avoir du mal parfois.
Mon code:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void Correct_Answers(const int SIZE, char correctAnswers[]);
void Submitted_Answers(const int SIZE, char submittedAnswers[]);
void Get_Name(string &fullName);
int main()
{
const int SIZE = 4;
char correctAnswers[SIZE];
char submittedAnswers[SIZE];
string fileName;
string fullName;
char go = 'Y';
ofstream outputObj;
Correct_Answers(SIZE, correctAnswers);
cout << "\nEnter the file name: ";
cin.ignore();
getline(cin, fileName);
outputObj.open(fileName);
while (go == 'Y' || go == 'y')
{
Get_Name(fullName);
outputObj << fullName << endl;
Submitted_Answers(SIZE, submittedAnswers);
outputObj << submittedAnswers << endl;
cout << "\nTo process another user enter Y. To quit enter N: ";
cin >> go;
}
cout << "\n\n\n";
system("Pause");
return(0);
}
void Correct_Answers(const int SIZE, char correctAnswers[])
{
int questionCounter = 0;
cout << "\nEnter the correct answers for the drivers exam.\n";
for (int x = 0; x < SIZE; x++)
{
cout << "\tQuestion #" << ++questionCounter << ": ";
cin >> correctAnswers[x];
while (correctAnswers[x] != 'A' && correctAnswers[x] != 'a' && correctAnswers[x] != 'B' && correctAnswers[x] != 'b' && correctAnswers[x] != 'C' && correctAnswers[x] != 'c' && correctAnswers[x] != 'D' && correctAnswers[x] != 'd')
{
cout << "\tInvalid entry. Re-enter answer: ";
cin >> correctAnswers[x];
}
}
}
void Submitted_Answers(const int SIZE, char submittedAnswers[])
{
int questionCounter = 0;
cout << "\nWelcome to the written portion of the drivers exam!";
cout << "\nDo your best to answer the questions to the best of your knowledge.";
cout << "\n15 out of 20 are needed to pass the exam. Best of luck!\n\n";
for (int x = 0; x < SIZE; x++)
{
cout << "\tQuestion #" << ++questionCounter << ": ";
cin >> submittedAnswers[x];
while (submittedAnswers[x] != 'A' && submittedAnswers[x] != 'a' && submittedAnswers[x] != 'B' && submittedAnswers[x] != 'b' && submittedAnswers[x] != 'C' && submittedAnswers[x] != 'c' && submittedAnswers[x] != 'D' && submittedAnswers[x] != 'd')
{
cout << "\tInvalid. Re-enter answer: ";
cin >> submittedAnswers[x];
}
}
}
void Get_Name(string &fullName)
{
cout << "\nEnter the users name: ";
cin.ignore();
getline(cin, fullName);
}
Avez-vous essayé de parcourir votre code avec un débogueur? –
Je n'ai pas. Je vais essayer que je suis honnêtement juste pas sûr de savoir comment utiliser un débogueur mais je suppose qu'il n'y a qu'une seule façon d'apprendre. Je viens d'utiliser des messages d'erreur du compilateur pour corriger la plupart des choses. –
Les erreurs de compilation sont émises uniquement lorsque le code que vous avez écrit ne peut pas être converti en exécutable. Pas tous les programmes qui compilent - fonctionnent correctement, ou même d'une manière définie.Vous utilisez un débogueur pour le parcourir, ligne par ligne, pour vérifier s'il fonctionne correctement. –