Условие задачи : написать программу-тест , которая будет выдавать случайным образом 10 примеров и в конце теста выводить количество правильных ответов и оценку.
Сложность : средняя .
Для начала давайте подумаем как мы будем решать эту задачу . Нам понадобиться цикл for, и в самом цикле мы будем делать следующее : мы будем получать два числа, занесем их в отдельные переменные , затем мы их перемножим и занесем ответ в переменную , дальше мы попросим пользователя ввести ответ , и потом сравним ответ введенный пользователем с ответом программы , и если ответ правильный то мы увеличиваем количество правильных ответов на 1 .
Давайте создадим каркас нашей программы :
uses crt ; var i, col,res, otv , num1, num2 : integer ; begin end.
Итого у нас 6 переменных . До цикла нам нужно написать такое слово как randomize чтобы у нас был более качественный random подробнее читайте (тут)
Цикл у нас будет от 1 до 10 вы можете сделать больше .
randomize ; for i := 1 to 10 do begin end;
Теперь давайте работать с циклом . Для начала получим случайным образом два числа с помощью функции random() и занесем ответ после умножения в переменную.
num1 := random(9)+1 num2 := random(9)+1; res := num1 * num2 ;
Дальше мы для пользователя выводим этот пример и просим чтобы он ввел ответ :
write(num1, ' * ', num2 , ' = '); readln(otv);
Затем мы сравниваем ответ введенный пользователем с ответом программы , т.е. с переменной res :
if (res <> otv) then writeln('Error ! ', num1,' * ', num2, ' = ',res) else col := col + 1 ;
Т.е. тут если ответ не верен , то мы выводим пользователю пример и правильный ответ , а иначе мы количество правильных ответов увеличиваем на 1.
И теперь нам осталось вывести оценку и кол-во правильных ответов :
writeln('Тест окончен !!!'); writeln('Количество правильных ответов : ', col); write('Твоя оценка : '); case col of 10 : writeln('5'); 9,8 : writeln('4'); 7,6 : writeln('3'); 0..5 : writeln('2'); end;
Весь код программы :
uses crt ; var i, col,res, otv , num1, num2 : integer ; begin clrscr; writeln('*** Тест на таблицу умножения ***'); writeln('После примера нажмите '); randomize ; for i := 1 to 10 do begin num1 := random(9)+1; num2 := random(9)+1; res := num1 * num2 ; write(num1, ' * ', num2 , ' = '); readln(otv); if (res <> otv) then writeln('Error ! ', num1,' * ', num2, ' = ',res) else col := col + 1 ; end; writeln('Тест окончен !!!'); writeln('Количество правильных ответов : ', col); write('Твоя оценка : '); case col of 10 : writeln('5'); 9,8 : writeln('4'); 7,6 : writeln('3'); 0..5 : writeln('2'); end; readln; end.