Задача с циклами - Free Pascal
Формулировка задачи:
Народ помогите решить такую задачу:
Пользователь вводит числа (3, 4 или 5) до ввода символа "e" или "E". Вывести среднее число этих чисел и уведомление, если от 3 до 4 то одно, от 4 до 5 другое, если среднее равно 5 то третье уведомление. После этого если вводится символ "q" или "Q" то происходит выход из программы иначе - программа повторяется.
Решение задачи: «Задача с циклами»
textual
Листинг программы
uses
Crt, SysUtils;
var
sum, count: LongWord;
ans1, ans2: Char;
avr: Single;
begin
repeat
ClrScr();
count := 0;
sum := 0;
repeat
Write('Input 3, 4, 5 or e: ');
ans2 := ReadKey;
WriteLn;
//защиту от дурака писать лень, но там всего пару ифов
if Not(ans2 in ['e', 'E'])
then
begin
Inc(count);
Inc(sum, StrToInt(ans2));
end;
until (ans2 in ['e', 'E']);
if (count <> 0)
then
begin
avr := sum / count;
Write('avr=', avr:0:3);
if (avr < 4)
then
WriteLn(' in [3..4)')
else
if (avr < 5)
then
WriteLn(' in [4..5)')
else
WriteLn(' in [5]');
end
else
WriteLn('No one number!');
Write('Press q for exit or any else to continue: ');
ans1 := ReadKey; WriteLn;
until (ans1 in ['q', 'Q']);
end.
Объяснение кода листинга программы
- Объявлены переменные: sum, count - LongWord; ans1, ans2 - Char; avr - Single;
- Повторяющийся блок кода, который выполняется до тех пор, пока пользователь не введет 'e' или 'E'.
- В этом блоке кода происходит подсчет количества введенных чисел и их суммы.
- После выхода из цикла, проверяется значение переменной
count. Если она не равна нулю, то вычисляется среднее значение и выводится на экран. - Если среднее значение меньше 4, то выводится сообщение
[3..4). - Если среднее значение меньше 5, но больше или равно 4, то выводится сообщение
[4..5). - Если среднее значение равно 5, то выводится сообщение
[5]. - Если
countравно нулю, то выводится сообщениеNo one number!. - Запросится ключ нажатия клавиши.
- Повторяющийся блок кода, который выполняется до тех пор, пока пользователь не нажмет 'q' или 'Q'.