Var
mCity: array [1..10] of string := ('Москва', 'Берлин', 'Париж', 'Лондон', 'Рим',
'Мадрид', 'Стокгольм', 'Берн', 'Вена', 'Афины');
mGov: array[1..10] of string := ('Россия', 'Германия', 'Франция',
'Великобритания', 'Италия', 'Испания', 'Швеция', 'Швейцария', 'Австрия', 'Греция');
mOps: array[1..4] of char := ('+', '-', '*', '/');
p, i, n, a, b, c, d, k: integer;
op: char;
s: string;
begin
Write('Выберите предмет: 1- Математика, 2-География -->');
Readln(p);
if (p < 1) or (p > 2) then Writeln('Неверный выбор, работа завершена')
else begin
Randomize;
k := 0;
if p = 1 then { тестируем математику }
for i := 1 to 3 do
begin
op := mOps[Random(4) + 1];
case op of
'+':
begin
a := Random(50) + 1;b := Random(50) + 1;
c := a + b;Write(a, ' + ', b, ' = ');Readln(d)
end;
'-':
begin
a := Random(99) + 1;b := Random(a) + 1;
c := a - b;Write(a, ' - ', b, ' = ');Readln(d)
end;
'*':
begin
a := Random(9) + 1;b := Random(9) + 1;
c := a * b;Write(a, ' x ', b, ' = ');Readln(d) end;
else begin
c := Random(9) + 1;b := Random(9) + 1;a := b * c;
Write(a, ' : ', b, ' = ');Readln(d)
end
end;
if c = d then Writeln('Верно')
else begin Writeln('Неверно');k := k + 1 end
end
else { тестируем географию }
for i := 1 to 3 do
begin
Write('Столица государства ');
n := Random(10) + 1;
Write(mGov[n], ' - ');Readln(s);
{
на всякий случай преобразуем ответ, записав
первую букву в верхнем регистре, прочие - в нижнем
}
s := LowerCase(s);s[1] := UpperCase(s[1]);
if s = mCity[n] then Writeln('Верно')
else begin Writeln('Неверно');k := k + 1 end
end;
{ Вывод результатов }
Write('Ваша отметка- ');
case k of
0: Write('5');
1: Write('4');
2: Write('3');
else write('2')
end
end
end.
Тестовые решения:
Выберите предмет: 1- Математика, 2-География -->1
29 + 32 = 61
Верно
28 - 10 = 18
Верно
6 x 6 = 35
Неверно
Ваша отметка- 4
Выберите предмет: 1- Математика, 2-География -->2
Столица государства Испания - Мадрид
Верно
Столица государства Греция - Афины
Верно
Столица государства Великобритания - лондон
Верно
Ваша отметка- 5