Мой код не работает, есть много ошибок компиляции, и это я знаю, что я испортил включение функций вместе с моим системным кодом заполнения
Для этого кода мне было поручено сделать программу, которая отвечала бы всем этим требованиям:
Часть 1 :
Напишите программу, которая будет тестировать пользователя по крайней мере на 5 вопросов "C++". Вопросы таковы
быть представленным в форме множественного выбора. Помнить:
а) попросить пользователя ввести свое имя (возможно, либо имя, либо полное имя)
б. использовать либо числовые ответы (1), либо Альфа-ответы (а)
c. чтобы сохранить ваши вопросы, соответствующие школе!
d. количество пользователей неизвестно.
e. разработать способ прекращения действия вопросника.
f. хранить ответы пользователей в последовательном файле.
Часть 2:
Создайте файл ответов для своей анкеты-викторины.
Часть 3:
Напишите программу, которая будет обращаться к вашему файлу "data", созданному в части 1, и "забивать" пользователей'
ответы на файл "ответ". Помнить:
а. что количество пользователей считается неизвестным.
б. распечатать дисплей, показывающий имя и счет каждого пользователя.
Любая помощь будет очень признательна, так как я новичок в c++ и пытаюсь изучить все ошибки, которые я сделал, и их происхождение.
Что я уже пробовал:
#include <iostream> //library for input output stream #include <fstream> //library for reading and writing files #include <assert.h> //for the assert function using namespace std; struct Components //Components variable has all the variables relating to the Component of the Quiz { string name; int score = 0; char ans1,ans2,ans3,ans4,ans5,ans6; ofstream fout; }; void GetInfo(Components); void Print(Components); void PrintAnswer(Components); int main() { cout<<"Hello user,this code is meant to Quiz you on multiple choice questions and then grade your answers."; cout<<"When finished your Quiz enter in the Keyword \"finished\" to finish your quiz and this program"; char Continue; do{ Components variables; GetInfo(variables); Print(variables); PrintAnswer(variables); cout<<"Do you wish to take this quiz again? If so, please enter in y or Y otherwise press n."; cin>>Continue; }while(Continue == 'y' || Continue == 'Y'); } void GetInfo(Components) { variables.fout.open("Quiz.txt", ios::out); assert(!variables.fout.fail()); cout<<"Okay user, please enter in your first and last name"; getline(cin.variables.name); cout<<"............................................................................"<<endl; cout<<"1: When working with multiple files (at the same time), the stream variables"<<endl; cout<<"\na. must all be of the same type, such as all ifstream, or all ofstream."; cout<<"\nb. must each be named independently, such as fin1, fin2, or fout1, fout2."; cout<<"\nc. must all be named the same, such as all fin and/or fout."; cout<<"\nd. are not needed since multiple files are present."<<endl; cin>>variables.ans1; cout<<"............................................................................"; cout<<"\n2: The required header file that allows classes of ofstream and ifstream to become available is"<<endl; cout<<"\na. iostream"; cout<<"\nb. filestream"; cout<<"\nc. assert.h"; cout<<"\nand. fstream"<<endl; cin>>variables.ans1; cout<<"............................................................................"; cout<<"\n3: When creating a new file, if a file of the same name already exists,"<<endl; cout<<"\nthe system will inform you that that file name is already in use."; cout<<"\na. true"; cout<<"\nb. false"<<endl; cin>>variables.ans1; cout<<"............................................................................"; cout<<"\n4: In the statement: fin.open(\"myfile.dat\", ios::in); the ios::in is the"<<endl; cout<<"\na. stream variable name"; cout<<"\nb. name of the file"; cout<<"\nc. stream operation mode"; cout<<"\nd. name of the buffer"<<endl; cin>>variables.ans1; cout<<"............................................................................"; cout<<"\n5: What is the purpose of this line of code? Be specific."<<endl; cout<<"\nfout.open(\"name.dat\",ios::app);"; cout<<"\na. Open a brand new binary file."; cout<<"\nb. Append the file"; cout<<"\nc. ios::app is a new file"; cout<<"\nd. Delete the file"<<endl; cin>>variables.ans1; cout<<"............................................................................"; if(ans1 == 'b' || ans1 == 'B'){ variables.score++; }if(ans2 == 'd' || ans2 == 'D'){ variables.score++; }if(ans3 == 'b' || ans3 == 'B'){ variables.score++; }if(ans4 == 'c' || ans4 == 'C'){ variables.score++; }if(ans5 == 'b' || ans5 == 'B'){ { variables.score++; } fout<<"Okay, "<<varibales.name<<" your total score is: "<<variables.score; variables.fout.close(); } void Print(Components) { ifstream fin; fin.open("Quiz.txt", ios::in); while(fin>>variables.name) { fin>>variables.score; if(variables.name != ""){ cout<<"OKay, "<<variables.name<<" your score is "<<variables.score<<endl; } } cout<<"Your Quiz has now officially been completed!"; fin.close(); } void PrintAnswer(Components) { variables.fout.open("AnswerSheet.txt", ios::in); cout<<"This is the file that has all the answers to your quiz and because you have finished it you can now see the answers."<<endl; fout<<"The answer to Question 1 is 'b'"; fout<<"The answer to Question 2 is 'd'"; fout<<"The answer to Question 3 is 'b'"; fout<<"The answer to Question 4 is 'c'"; fout<<"The answer to Question 5 is 'b'"; variables.fout.close(); }
<pre lang="c++">
Rick York
Время, чтобы вырваться из отладчика. Я, конечно, не ожидал бы, что кто-то будет отлаживать это для вас.
Кстати - функции toupper и tolower очень удобны.
Member 14982907
Да, я не думал, что многие люди захотят отлаживать это для меня, потому что это очень долго, ну, для меня это так или иначе.
Richard MacCutchan
Вопросы, и их правильный ответ, должны быть прочитаны из текстового файла, не закодированного в программе. Поэтому вам нужен метод, который считывает следующий вопрос из файла, представляет его пользователю и возвращает его ответ вместе с флагом, указывающим, является ли он правильным или нет.
Richard Deeming
"Натыкаясь" на ваш вопрос, вы не заставите нас передумать и сделать вашу работу за вас.
Member 14982907
Я не знаю, что вы подразумеваете под "натыканием", но все, что я хочу, - это чтобы кто-то помог исправить мой код, потому что мой учитель не мог объяснить его мне очень хорошо. Я приношу свои извинения за то, что так обидел вас.
Richard Deeming
"Bumping" означает редактирование вашего вопроса без внесения каких-либо заметных изменений только для того, чтобы вернуть его в начало списка. Это очень грубо, и в конечном итоге ваш вопрос будет удален.
Rick York
Я подозреваю, что спрашивающий даже не писал этот код. Они не дали никакого описания того, где он находится по ошибке или что он делает, вероятно, потому, что они не знают.
Member 14982907
Я действительно написал код, но я не понимаю недостатков, потому что я все еще учусь делать файлы и другой код.
Richard MacCutchan
Во-первых, исправьте все орфографические ошибки. Когда вы называете переменную, вы должны использовать это точное имя везде.
Затем добавьте правильные ссылки на параметры и имена для ваших функций:
void GetInfo(Components& variables) // the function needs the name in order to refer to its content { variables.fout.open("Quiz.txt", ios::out); }
Возможно, есть и другие проблемы, которые я не заметил.
Member 14982907
- Спасибо, сэр, я очень ценю вашу помощь.