C/C++
C++ , нужно написать программу с тестом.
Чтобы выводилась на экран фраза с вопросом , например "Когда началась Великая Отчественная война". А следом за ним появялись три варианта ответа( в столбик ) . И при правильном ответе писалось "Вы дали правльный ответ", если неправильный , то "вы дали неправильный ответ"
Оператор if или оператор switch case. Шаблоны все есть в интернете.
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <random>
#include <chrono>
using namespace std;
struct Question {
string question;
vector<string> answers;
private:
friend ostream& operator<<(ostream& out, const Question& q) {
out << '\t' << q.question << '\n';
const streamsize w = 3U;
auto n = 0U;
for (const auto& record : q.answers) {
cout << setw(w) << ++n << ". " << record << '\n';
}
return out;
}
};
struct Database : public vector<Question> {};
class Test {
public:
void load(const Database& db) {
this->db = db;
}
void start()const {
if (db.empty()) {
puts("Ошибка: база не содержит данных.");
return;
}
uniform_int_distribution<> uid(1, db.front().answers.size() - 1);
mt19937 gen{ random_device()() };
auto well = 0U;
for (const auto& record : db) {
auto tmp = record;
const auto seed = static_cast<unsigned>(chrono::system_clock::now().time_since_epoch().count());
shuffle(tmp.answers.begin(), tmp.answers.end(), default_random_engine(seed));
cout << tmp << '\n';
auto n = 0U;
while (true) {
cout << "Ваш вариант ответа: ";
cin >> n;
if (!n || n > tmp.answers.size()) {
puts("Ошибка: недопустимый вариант ответа!");
} else {
break;
}
}
if (tmp.answers[n - 1] == record.answers.front()) {
++well;
puts("Вы дали правльный ответ!\n");
} else {
puts("Вы дали неправльный ответ!\n");
}
}
cout << "Вопросов: " << db.size() << '\n';
cout << "Правильных ответов: " << well << '\n';
}
private:
Database db;
};
Database war() {
Database db;
db.push_back({
"Когда началась Великая Отечественная война?",
{ "22 июня 1941 года", "1 сентября 1939 года", "9 мая 1945 года" }
});
db.push_back({
"Когда закончилась Великая Отечественная война?",
{ "9 мая 1945 года", "22 июня 1941 года", "1 сентября 1939 года" }
});
db.push_back({
"Когда началась Вторая мировая война?",
{ "1 сентября 1939 года", "22 июня 1941 года", "9 мая 1945 года" }
});
return db;
}
int main() {
auto db = war();
Test test;
test.load(db);
test.start();
}
#include <iomanip>
#include <string>
#include <vector>
#include <random>
#include <chrono>
using namespace std;
struct Question {
string question;
vector<string> answers;
private:
friend ostream& operator<<(ostream& out, const Question& q) {
out << '\t' << q.question << '\n';
const streamsize w = 3U;
auto n = 0U;
for (const auto& record : q.answers) {
cout << setw(w) << ++n << ". " << record << '\n';
}
return out;
}
};
struct Database : public vector<Question> {};
class Test {
public:
void load(const Database& db) {
this->db = db;
}
void start()const {
if (db.empty()) {
puts("Ошибка: база не содержит данных.");
return;
}
uniform_int_distribution<> uid(1, db.front().answers.size() - 1);
mt19937 gen{ random_device()() };
auto well = 0U;
for (const auto& record : db) {
auto tmp = record;
const auto seed = static_cast<unsigned>(chrono::system_clock::now().time_since_epoch().count());
shuffle(tmp.answers.begin(), tmp.answers.end(), default_random_engine(seed));
cout << tmp << '\n';
auto n = 0U;
while (true) {
cout << "Ваш вариант ответа: ";
cin >> n;
if (!n || n > tmp.answers.size()) {
puts("Ошибка: недопустимый вариант ответа!");
} else {
break;
}
}
if (tmp.answers[n - 1] == record.answers.front()) {
++well;
puts("Вы дали правльный ответ!\n");
} else {
puts("Вы дали неправльный ответ!\n");
}
}
cout << "Вопросов: " << db.size() << '\n';
cout << "Правильных ответов: " << well << '\n';
}
private:
Database db;
};
Database war() {
Database db;
db.push_back({
"Когда началась Великая Отечественная война?",
{ "22 июня 1941 года", "1 сентября 1939 года", "9 мая 1945 года" }
});
db.push_back({
"Когда закончилась Великая Отечественная война?",
{ "9 мая 1945 года", "22 июня 1941 года", "1 сентября 1939 года" }
});
db.push_back({
"Когда началась Вторая мировая война?",
{ "1 сентября 1939 года", "22 июня 1941 года", "9 мая 1945 года" }
});
return db;
}
int main() {
auto db = war();
Test test;
test.load(db);
test.start();
}
static void Main(string[] args)
{
string answer = Console.ReadLine();
Console.WriteLine("Когда началась ВОВ?");
Console.WriteLine("a - 22 июня 1941 г.");
Console.WriteLine("б - 23 февраля 2022 г.");
Console.WriteLine("в - 1 июля 1941 г.");
if (answer == "a" || answer == "а") Console.WriteLine("Правильно!");
else Console.WriteLine("Неправильно");
}
Андрей Шибанов
это конечно с# но я уверен в твоих способностях, ты сможешь перевести в плюсы
Firuz Karimov
спасибо друг!!
Похожие вопросы
- Массивы c++, нужно написать программу
- Нужно написать программу на языке C++
- Помогите, пожалуйста, нужно написать программу на C++
- Нужно написать программу с вложенным циклом
- Нужно написать программу вхождения точки в круг, при этом рассмотреть отдельно на границе и за пределами
- Помогите написать программу на C++
- Написать программу на c++
- Написать программу, которая по выбору пользователя меняет цвет консольного приложения C++
- Помоги пожалуйста написать программу на C++
- Написать программу на C++.Создать класс vector3d, задаваемый тройкой координат. Создать конструктор...