Я написал код, который показывает вопрос и 4 ответа, прошу выбрать правильный, и проверяет выбор.
Теперь я построю таблицу, которая будет содержать 6 столбцов: question/a/b/c/d / correct_answer , и около сотни строк с моими вопросами. Теперь я хотел бы, чтобы моя программа случайным образом выбрала 5 вопросов из таблицы и показала их пользователю.
Первый вопрос: Можно ли сделать таблицу в Excel и использовать ее в Visual Studio? Если нет, то какое программное обеспечение я должен использовать, чтобы сделать таблицу как это просто, как это возможно, и как реализовать его в мой проект Visual studio? Если да, то как реализовать таблицу Excel в мой проект Visual studio?
Второй вопрос, Какой самый простой код я должен написать, чтобы случайным образом выбрать 5 из 100 вопросов из моей таблицы?
Код вопроса:
int main()
{
string ans; //Users input
string cans; //Correct answer, comes from table
string quest; //Question, comes from table
string a; // Answers, come from table
string b;
string c;
string d;
int points; //Amount of points
points = 0;
cout << "n" << quest << "n" << a << "n" << b << "n" << c << "n" << d << "n";
cout << "Your answer is: ";
cin >> ans;
if (ans == cans)
{
points = points + 1;
cout << "Yes, it is correctn";
}
else
{
cout << "No, correct answer is " << cans << "n";
}
return 0;
}
Первая Часть
Вы можете использовать Excel для редактирования вопросов и их сохранения. Но при сохранении обратите внимание на формат файла.
Вы хотите сохранить файл Excel как
.csv
файл, а.xls
не или.xlsx
файл. Просто перейдите в Файл — > Сохранить файл как ->> и измените тип на>>.csv
.Это потому, что чтение
.csv
файлов намного проще..csv
каждая ячейка в строке файла разделена запятой (,
), а каждая строка-символом newline ('\n'
).Итак, вот пример файла Excel:
После того, как я сохраню его как
.csv
файл и открою его с помощью текстового редактора (Atom, здесь), он выглядит следующим образом:После этого вам нужно только написать некоторый код, чтобы прочитать файл.
Это код, который я использовал (я добавил избыточные комментарии, чтобы сделать код более явным для начинающих):
вторая часть
Чтобы выбрать случайное число, можно использовать этот код (я позаимствовал его из другого ответа)
В отличие от старого метода , это не создает смещения в сторону нижнего конца. Однако новый движок доступен только в компиляторах C++11. Так что имейте это в виду. Если вам нужно использовать старый метод, вы можете исправить смещение, следуя этому ответу .
Чтобы выбрать 5 различных чисел, каждый раз, когда вы генерируете случайное число, храните его в массиве и проверяете, было ли это число уже использовано. Это может предотвратить повторение вопросов.
Чтобы ответить на вопрос 1: в Excel выберите Файл>Сохранить как. Выберите UTF-16 Unicode Text (.txt), назовите свой файл и сохраните его там, где программа может получить к нему доступ. В программе C++ используйте библиотеку fstream для текстовых файлов:
Если текстовый файл находится в том же каталоге, используйте
Чтобы ответить на вопрос 2: существует функция rand (), которая возвращает целое число между нулем и RAND_MAX. Затем вы можете использовать модуль (%), чтобы получить случайное число в нужном диапазоне.
Вот тест, который я сделал, чтобы помочь себе учиться:
вопросы.dat будет иметь такие данные