Лабораторная работа №3. Экранные меню и циклы

Постановка задачи

Основная задача.

Организовать экранное меню из трех пунктов (расчет площади прямоугольника, треугольника и круга). По выбранному номеру пункта выполнить расчет площади соответствующей фигуры с проверкой корректности ввода данных и возможности вычислений.

 

Дополнительные задачи.

1. Добавить в меню четвертый пункт – «Выход» – и организовать внешний цикл WHILE для выполнения программы, пока не будет выбран соответствующий пункт меню.

2. Добавить в каждое вычисление площади вопрос «Продолжить вычисление (Y/N) ?» и цикл REPEAT, который должен выполняться, пока не будет введено «N».

 

Математическая модель

, где p – полупериметр, .

 

 

Описание алгоритма

Алгоритм Lab3.

А. Начать исполнение.

1. Присвоить переменной Loop значение "истина".

2. Пока Loop имеет значение "истина", повторять:

А. Вывести на экран меню: "1 – Расчет площади прямоугольника
2 – Расчет площади треугольника
3 – Расчет площади круга".

Б. Вывести сообщение "Выберите пункт меню".

В. Ввести n.

Г. Исследовать n:

1. Если n=1, то:

А. Повторять:

1. Вывести сообщение "Введите стороны прямоугольника".

2. Ввести a,b.

3. Если a≤0, или b≤0,

А. то вывести сообщение "Некорректный ввод".

Б. иначе вывести "Площадь прямоугольника равна ", ab.

4. Вывести сообщение "Продолжить вычисления (Y/N) ?".

5. Ввести символ ot.

Б. Конец цикла при условии ot='N'.

2. Если n=2, то:

А. Повторять:

1. Вывести сообщение "Введите стороны треугольника".

2. Ввести a,b,c.

3. Если a≤0, или b≤0, или с≤0,

А. то вывести "Некорректный ввод".

Б. иначе:

1. Если a+bc, или a+cb, или b+ca,

А. то вывести "Некорректный ввод".

Б. иначе:

1. Рассчитать полупериметр .

2. Вывести "Площадь треугольника равна ", .

4. Вывести сообщение "Продолжить вычисления (Y/N) ?".

5. Ввести символ ot.

Б. Конец цикла при условии ot='N'.

3. Если n=3, то:

А. Повторять:

1. Вывести сообщение "Введите радиус круга".

2. Ввести r.

3. Если r≤0,

А. то вывести сообщение "Некорректный ввод".

Б. иначе вывести "Площадь круга равна ", πr2.

4. Вывести сообщение "Продолжить вычисления (Y/N) ?".

5. Ввести символ ot.

Б. Конец цикла при условии ot='N'.

4. Если n=4, то присвоить переменной Loop значение "ложь".

3. Конец цикла.

Б. Закончить исполнение.

 

Текст программы

program Lab3;

{$APPTYPE CONSOLE}

uses SysUtils;

var

Loop:Boolean;

n:Integer;

a,b,c,p,r:Real;

ch:Char;

begin

Loop:=True;

while Loop do

begin

Writeln(' Меню:');

Writeln('1. Расчет площади прямоугольника');

Writeln('2. Расчет площади треугольника');

Writeln('3. Расчет площади круга');

Writeln('4. Выход из программы');

Write('Выберите пункт меню: ');

Readln(n);

case n of

1:begin

repeat

Write('Введите стороны прямоугольника: ');

Readln(a,b);

if (a<=0) or (b<=0) then

Writeln('Некорректный ввод')

else

Writeln('Площадь прямоугольника равна ',
a*b);

Write('Продолжить вычисления (Y/N) ? ');

Readln(ch);

until UpCase(ch)='N';

end;

2:begin

repeat

Write('Введите стороны треугольника: ');

Readln(a,b,c);

if (a<=0) or (b<=0) or (c<=0) then

Writeln('Некорректный ввод')

else

if (a+b<=c) or (a+c<=b) or (b+c<=a) then

Writeln('Вычисление невозможно')

else

begin

p:=(a+b+c)/2;

Writeln('Площадь треугольника равна ',
Sqrt(p*(p-a)*(p-b)*(p-c)));

end;

Write('Продолжить вычисления (Y/N) ? ');

Readln(ch);

until UpCase(ch)='N';

end;

3:begin

repeat

Write('Введите радиус круга: ');

Readln(r);

if r<=0 then

Writeln('Некорректный ввод')

else

Writeln('Площадь круга равна ',Pi*Sqr(r));

Write('Продолжить вычисления (Y/N) ? ');

Readln(ch);

until UpCase(ch)='N';

end;

4:Loop:=False;

end;

end;

end.

 

Тест

Для каждого пункта меню необходимо выполнить несколько тестов с отрицательными числами, неправильными треугольниками и т.д. Примеры таблиц тестов приведены ниже.

 

Пункт 1 – «Площадь прямоугольника»

a b Расчетная площадь Результат работы программы
-3 Некорректный ввод

 

Пункт 2 – «Площадь треугольника»

a b c Расчетная площадь Результат работы программы
-1 Некорректный ввод
Вычисление невозможно

 

Пункт 3 – «Площадь круга»

r Расчетная площадь Результат работы программы
-2 Некорректный ввод
314.1592653