Задачи по C++. Тест на таблицу умножения

Задачи по C++

Условие задачи : Написать программу-тест , которая будет выдавать случайным образом 10 примеров и в конце теста выводить количество правильных ответов и оценку (Язык C++).

Сложность : средняя .

Для начала давайте подумаем как мы будем решать эту задачу . Нам понадобиться цикл for, и в самом цикле мы будем делать следующее : мы будем получать два числа, занесем их в отдельные переменные , затем мы их перемножим и занесем ответ в переменную , дальше мы попросим пользователя ввести ответ , и потом сравним ответ введенный пользователем с ответом программы , и если ответ правильный то мы увеличиваем количество правильных ответов на 1 .

Для теста на таблицу умножения нам понадобятся следующие переменные :

  1. Переменная i — для цикла for
  2. Переменная col — для количества правильных ответов
  3. Переменная res — для правильного ответа
  4. Переменная otv — для ответа введенного пользователем
  5. Переменная 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() ноль
}

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий