Условие задачи : Написать программу-тест , которая будет выдавать случайным образом 10 примеров и в конце теста выводить количество правильных ответов и оценку (Язык C++).
Сложность : средняя .
Для начала давайте подумаем как мы будем решать эту задачу . Нам понадобиться цикл for, и в самом цикле мы будем делать следующее : мы будем получать два числа, занесем их в отдельные переменные , затем мы их перемножим и занесем ответ в переменную , дальше мы попросим пользователя ввести ответ , и потом сравним ответ введенный пользователем с ответом программы , и если ответ правильный то мы увеличиваем количество правильных ответов на 1 .
Для теста на таблицу умножения нам понадобятся следующие переменные :
- Переменная i — для цикла for
- Переменная col — для количества правильных ответов
- Переменная res — для правильного ответа
- Переменная otv — для ответа введенного пользователем
- Переменная num1 и num2 — для чисел которые будем перемножать
Начнем мы с каркаса нашей программы :
#include <ctime> #include <iostream> using namespace std ; // используем именное пространство std int main() { setlocale(LC_ALL, "Russian"); // включаем русский язык srand(time(0)); // инициализация генератора случайных чисел, подобие randomize int i, col,res, otv , num1, num2 ; system("PAUSE"); // чтобы программа не закрывалась return 0 ; // возвращаем функции main() ноль }
Итого у нас 6 переменных . До цикла нам нужно написать srand(time(0)) для того чтобы у нас получались случайные числа.
Цикл у нас будет от 1 до 10 вы можете сделать больше , 10 это кол-во примеров в тесте :
for (i=1; i<=10; i++) { num1 = rand() % 9 + 1; num2 = rand() % 9 + 1; res = num1 * num2 ; }
Теперь давайте работать с циклом . Для начала получим случайным образом два числа с помощью функции srand(time(0)) и занесем ответ после умножения в переменную, чтобы потом сравнить с ответом введенным пользователем.
Дальше мы для пользователя выводим этот пример и просим чтобы он ввел ответ :
cout << num1 << " * " << num2 << " = " ; cin >> otv;
Затем мы сравниваем ответ введенный пользователем с ответом программы , т.е. с переменной res :
if (res != otv) cout << "Ошибка !" << num1 << " * " << num2 << " = " << res << endl; else col = col + 1;
Т.е. тут если ответ не верен , то мы выводим пользователю пример и правильный ответ , а иначе мы количество правильных ответов увеличиваем на 1.
И теперь нам осталось вывести оценку и кол-во правильных ответов :
cout << "Тест окончен!!!" << endl; cout << "Количество правильных ответов : " << col << endl; cout << "Ваша оценка : " ; if (col <= 5) cout << 2 << endl; else { if ((col >= 6) && (col <= 7) ) cout << 3 << endl; if ((col <= 9) && (col >= 8)) cout << 4 << endl; if (col == 10) cout << 5 << endl; }
Всё решение задачи C++ :
#include <ctime> #include <iostream> using namespace std ; // используем именное пространство std int main() { setlocale(LC_ALL, "Russian"); // включаем русский язык srand(time(0)); // инициализация генератора случайных чисел, подобие randomize int i, col,res, otv , num1, num2 ; col = 0 ; for (i=1; i<=10; i++) { num1 = rand() % 9 + 1; num2 = rand() % 9 + 1; res = num1 * num2 ; cout << num1 << " * " << num2 << " = " ; cin >> otv; if (res != otv) cout << "Ошибка !" << num1 << " * " << num2 << " = " << res << endl; else col = col + 1; } cout << "Тест окончен!!!" << endl; cout << "Количество правильных ответов : " << col << endl; cout << "Ваша оценка : " ; if (col <= 5) cout << 2 << endl; else { if ((col >= 6) && (col <= 7) ) cout << 3 << endl; if ((col <= 9) && (col >= 8)) cout << 4 << endl; if (col == 10) cout << 5 << endl; } system("PAUSE"); // чтобы программа не закрывалась return 0 ; // возвращаем функции main() ноль }