Написать программу, в которой пользователь выбирает одну из предметных...

0 голосов
42 просмотров

Написать программу, в которой пользователь выбирает одну из предметных областей:математика или география. Если выбрана математика-компьютер по порядку задает три примера на вычисление (например: 4+3=?). Если выбрана география-компьютер спрашивает столицы трех государств. Компьютер проверяет ответы на правильность и в конце выводит оценку на экран:5-если не было ошибок, 4-одна ошибка, 3-две ошибки, 2-если все ответы неверные.

Помогите пожалуйста, заранее благодарю.


Информатика (50 баллов) | 42 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

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



(142k баллов)
0

Реализовано в Pascaд.ABC.Net. Программа работоспособна без изменений в некоторых других версиях. Также, работоспособна в любой версии Паскаля после небольшой модификации.

0

Особенностью является генерация трех случайно выбранных из десяти возможных вариантов по географии и большого числа случайно сгенерированных примеров на четыре действия арифметики в пределах первой сотни чисел.

0 голосов

Var a,b,c,z,x,h,count:integer;
q,w,e,r,t,y,k:string;
begin
a:=99;
b:=81;
c:=63;
q:='Берлин';
w:='Москва';
e:='Бразилиа';
writeln('Выбери предмет');
writeln('математика или география ');
read(k);
case k of
'география' : begin
readln;
write('Столица Германии это ');
read(r);
readln;
writeln;
write('Столица России это ');
read(t);
readln;
writeln;
write('Столица Бразилии это ');
read(y);
readln;
writeln;
end;
'математика' : begin
write('11*9=');
read(z);
writeln;
write('9*9=');
read(x);
writeln;
write('7*9=');
read(h);
writeln;
end;
end;
if q=r then count:=count+1;
if w=t then count:=count+1;
if e=y then count:=count+1;
if a=z then count:=count+1;
if b=x then count:=count+1;
if c=h then count:=count+1;
if count=0 then writeln('Твоя оценка по предмету ',k,' это только 2');
if count=1 then writeln('Твоя оценка по предмету ',k,' это только 3');
if count=2 then writeln('Твоя оценка по предмету ',k,' это только 4');
if count=3 then writeln('Твоя оценка по предмету ',k,' это только 5');
end.

(1.7k баллов)
0

Обязательно соблюдать шрифт

0

спасибо большое