Написать программу, моделирующую тренажер по устному счету. Пользователь вводит
разрядность операндов, тип операции (+ - * /) на множестве натуральных чисел и количество
примеров. Компьютер генерирует случайным образом операнды, вычисляет результат операции
и выводит пользователю серию примеров, в каждом из которых один из операндов или результат
замаскирован. Пользователь вводит пропущенное число, компьютер проверяет правильность и
ведет статистику ошибок.
Другие языки программирования и технологии
Сможет кто сделать? язык Паскаль
Писать программу не буду, но "болванку" дам. Тем более, что в задании есть неясности. Особенно с делением. Что результат тоже должен быть "на множестве натуральных чисел"? В общем вот вам усеченный пример
type
TJob = record
Op1, Op2 : Integer;
Op : Integer;
Res : Integer;
end;
const
OpType : array[0..3] of Char = ('+', '-', '*', '/');
var
Digits : Word;
NumJob : Word;
Jobs : array of TJob;
begin
Randomize;
Write('Разрядность операндов: '); Readln(Digits);
Digits := Trunc(Exp(Digits * Ln(10)));
Write('Число примеров: '); Readln(NumJob);
SetLength(Jobs, NumJob);
for var i:=0 to NumJob-1 do begin
Jobs[i].Op1 := Random(Digits);
Jobs[i].Op2 := Random(Digits);
Jobs[i].Op := Random(4);
case Jobs[i].Op of
0 : Jobs[i].Res := Jobs[i].Op1 + Jobs[i].Op2;
1 : Jobs[i].Res := Jobs[i].Op1 - Jobs[i].Op2;
2 : Jobs[i].Res := Jobs[i].Op1 * Jobs[i].Op2;
// 3 : Jobs[i].Res := Jobs[i].Op1 / Jobs[i].Op2;
end;
end;
for var i:=0 to NumJob-1 do begin
Writeln(Jobs[i].Op1 + ' ' + OpType[Jobs[i].Op] + ' ' + Jobs[i].Op2 + ' = ' + Jobs[i].Res);
end;
end.
В последнем цикле выводятся сгенерированные примеры. Ессно, без деления. Вас остается только случайным образом "закрыть" одну из 4 частей примера, подождать ответа пользователя и сравнить его с "закрытой" частью примера. Ну и про статистику не забыть.
type
TJob = record
Op1, Op2 : Integer;
Op : Integer;
Res : Integer;
end;
const
OpType : array[0..3] of Char = ('+', '-', '*', '/');
var
Digits : Word;
NumJob : Word;
Jobs : array of TJob;
begin
Randomize;
Write('Разрядность операндов: '); Readln(Digits);
Digits := Trunc(Exp(Digits * Ln(10)));
Write('Число примеров: '); Readln(NumJob);
SetLength(Jobs, NumJob);
for var i:=0 to NumJob-1 do begin
Jobs[i].Op1 := Random(Digits);
Jobs[i].Op2 := Random(Digits);
Jobs[i].Op := Random(4);
case Jobs[i].Op of
0 : Jobs[i].Res := Jobs[i].Op1 + Jobs[i].Op2;
1 : Jobs[i].Res := Jobs[i].Op1 - Jobs[i].Op2;
2 : Jobs[i].Res := Jobs[i].Op1 * Jobs[i].Op2;
// 3 : Jobs[i].Res := Jobs[i].Op1 / Jobs[i].Op2;
end;
end;
for var i:=0 to NumJob-1 do begin
Writeln(Jobs[i].Op1 + ' ' + OpType[Jobs[i].Op] + ' ' + Jobs[i].Op2 + ' = ' + Jobs[i].Res);
end;
end.
В последнем цикле выводятся сгенерированные примеры. Ессно, без деления. Вас остается только случайным образом "закрыть" одну из 4 частей примера, подождать ответа пользователя и сравнить его с "закрытой" частью примера. Ну и про статистику не забыть.
Я могу. Но не хочу.
Ну я могу.
Цена вопроса?
Вернее, вопрос цены…
Цена вопроса?
Вернее, вопрос цены…
ЧЁ?? Это какой класс 38?
Похожие вопросы
- Помогите записать на языке паскаля.
- Нужны программы на языке Паскаль
- язык Паскаль нужен ли?
- Чем отличаются паскаль и турбо паскаль? (это типа компилятор для языка паскаль?)
- Для чего язык паскаль??? Для чего язык паскаль??? Его в школах изучают, а почему не c++ или тот же php(html изучают!)?
- Помощь по информатике. 9 класс. Программирование .Язык Паскаль. Ветвление
- Как записать на языке Паскаля выражение: деление на ноль невозможно
- Напишите программу на языке Паскаль для решения задачи:
- В России народ все еще интересуется языком "Паскаль", как в советские времена Мне уже смешно когда речь идет о "Паскаль"
- Здравствуйте, кто нибудь, сможет создать программу через паскаль, вычисляющую произведение цифр 10-х значных чисел?