// PascalABC.NET 3.4.2, сборка 1785 от 06.09.2018
var c, w: integer;
procedure check;
begin
var (a, b) := (Random(0, 20), Random(0, 20));
Print($'{a}*{b}=');
if a * b = ReadInteger then begin inc(c); Println('Правильно') end
else begin inc(w); Println('Неправильно') end;
end;
procedure res;
begin
Println($'Задано вопросов {c+w}');
Println($'Правильных {c}({(c*100)/(c+w):f1}%)');
Println($'Неправильных {w}({(w*100)/(c+w):f1}%)');
end;
begin
var start := true;
while start do
begin
Println('Проверим?(0/1)');
if ReadInteger = 0 then
begin start := false; res; end
else check;
end;
end.
Пример в приложении.
//Язык Pascal
Program multiplication;
Var
code, rightAnswers, mistakes, answersCount, value1, value2, answer: integer;
Begin
Randomize;
code := 1;
rightAnswers := 0;
mistakes := 0;
answersCount := 0;
while code = 1 do
begin
Write('Проверим? ');
Readln(code);
Writeln();
if (code = 1) then
begin
value1 := random(1, 9);
value2 := random(1, 9);
Write(value1, '*', value2, ' = ');
Readln(answer);
if (answer = value1 * value2) then
begin
Writeln('Правильно!');
rightAnswers := rightAnswers + 1;
end
else
begin
Writeln('Неправильно!');
mistakes := mistakes + 1;
end;
answersCount := answersCount + 1;
Writeln();
end;
end;
Writeln('Статистика:');
Writeln('Задано вопросов: ', answersCount);
Writeln('Количество правильных ответов: ', rightAnswers);
Writeln('Число ошибок: ', mistakes);
End.
//Преобразую код так, чтобы он сам возвращал мне все варианты
//Pascal ABC.NET Версия 2.2 Сборка 790
VAR x,L,M,g:integer;
begin
for x:=1 to 10000 do
begin;
L:=0;
M:=0;
g:=x;
while g>0 do
begin
M:=M+1;
if g mod 2<>0 then L:=L+1;
g:=g div 2;
end;
if (l=7) and (m=8) then writeln(x);
end;
end.
Возвращаемые значения:
191
223
239
247
251
253
254
ответ: 254