Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

7.9. Приклади програм з умовним оператором

Приведемо кілька прикладів закінчених програм, що використовують РВП.

Пр.Перевірити, чи може бути побудований прямокутний трикутник по довжинах сторін a,b,c.

Проблема з розв'язком цього завдання – не в перевірці умови теореми Піфагора, а в тому, що в умові не сказане, яка зі сторін може бути гіпотенузою. Розв'язків можливо трохи – запитувати в користувача введення даних по зростанню довжини сторін, перевіряти всі три можливі умови теореми Піфагора й т.п. Використовуємо найбільш природній розв'язок – перед перевіркою умови теореми Піфагора впорядкуємо величини a,b,c так, щоб виконувалися співвідношення a≤b≤c. Для цього використовуємо приймання з обміном значень змінних із глави 4.

var a,b,c, { Довжини сторін }

s:real; { Буферна змінна для обміну }

begin

{ СЕКЦІЯ ВВЕДЕННЯ ДАНИХ }

writeln;

write ('Уведіть довжину 1 сторони (більше 0):');

readln (a);

write ('Уведіть довжину 2 сторони (більше 0):');

readln (b);

write ('Уведіть довжину 3 сторони (більше 0):');

readln (c);

{ РОБИМО СТОРОНУ a МІНІМАЛЬНОЇ, А СТОРОНУ c - МАКСИМАЛЬНОЇ }

if (a>b) then begin

s:=a; a:=b; b:=s;

end;

if (a>c) then begin

s:=a; a:=c; c:=s;

end;

if (b>c) then begin

s:=b; b:=c; c:=s;

end;

{ ПЕРЕВІРЯЄМО УМОВУ ТЕОРЕМИ ПИФАГОРА Й РОБИМО ВИВІД }

if abs(a*a+b*b-c*c)<1e-8 then writeln

('Прямокутний трикутник може бути побудований!')

else writeln

('Прямокутний трикутник не може бути побудований!')

end.

Пр.Визначити, чи попадає крапка площини, задана координатами (a,b) у прямокутник, заданий координатами двох кутів (x1,y1) і (x2,y2).

Як і в попередньому завданні, було б не зовсім коректно вимагати від користувача вводити дані в певному порядку – набагато краще при необхідності поміняти x- і y-координати прямокутника так, щоб пари змінних (x1,y1) містила координати лівого нижнього кута прямокутника, а (x2,y2) – правого верхнього.

var x1,y1,x2,y2,a,b:real;

begin

writeln ('Уведіть координати першого кута:');

read (x1,y1);

writeln ('Уведіть координати другого кута:');

read (x2,y2);

if x1>x2 then begin

a:=x1; x1:=x2; x2:=a;

end;

if y1>y2 then begin

a:=y1; y1:=y2; y2:=a;

end;

writeln ('Уведіть координати крапки:');

read (a,b);

if (x1<=a) and (a<=x2) and (y1<=b) and (b<=y2) then

writeln ('Крапка попадає в прямокутник')

else

writeln ('Крапка НЕ попадає в прямокутник');

end.

Пр.Уводиться грошова сума в рублях і копійках. Програма друкує введену суму із правильною формою слів "рублі" і "копійки", наприклад, "123 рубля 15 копійок".

Закінчення, використовуване для слів "рублі" і "копійки", залежить від останньої цифри суми, яку можна одержати, побравши залишок від розподілу на 10 (1058 рублів, 38рубліві т.д.). Виключення – суми з останніми двома цифрами від 11 до 19 включно, які завжди вимовляються "рублів" і "копійок" (511рублів, але 51рубль). Використовуючи цю інформацію, складемо програму.

var r,k,o10,o100:integer;

begin

writeln;

write ('Уведіть кількість рублів, потім пробіл і кількість копійок:');

read (r,k);

writeln;

o10:=r mod 10; {Побрали останню цифру}

o100:=r mod 100; {...і 2 останніх цифри}

write ('Правильно сказати: ',r,' ');

{Друкуємо число рублів, потім пробіл}

if (o100>10) and (o100<20) or (o10>4) or (o10=0) then write ('рублів')

else if (o10>1) and (o10<5) then write ('рубля')

else write ('рубль');

{аналогічно для копійок:}

o10:=k mod 10;

o100:=k mod 100;

write (' ',k,' '); {друкуємо число копійок із пробілом до й послу}

if (o100>10) and (o100<20) or (o10>4) or (o10=0) then write ('копійок')

else if (o10>1) and (o10<5) then write ('копійки')

else write ('копійка');

end.