Приведемо кілька прикладів закінчених програм, що використовують РВП.
Пр. Перевірити, чи може бути побудований прямокутний трикутник по довжинах сторін 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.