Writeln('Площа кімнати, що не накрита килимами ', S);
End;
Readkey;
End.
Приклад № 10
Від річкового вокзалу відійшли одночасно у протилежних напрямках теплохід та турист. Теплохід рухався зі швидкістю V1км/ год, а турист по стежці вздовж річки зі швидкістю V2км/год. Якщо через N годин турист передумає і вирішить попливти річкою назад за теплоходом зі швидкістю V3км/год, то чи встигне він підсісти на теплохід, який має за графіком зупинку через Y годин після початку руху і стоїть на цій зупинці Z годин? Вважати на те, що всі події відбувалися протягом однієї доби.
Якщо турист на протязі N годин рухався в протилежному напрямку від теплоходу, то відстань між ними в той момент, коли турист вирішив наздогнати теплохід, була наступна:
S=(V1+ V2)*N
де V1та V2— швидкості теплоходу та туриста відповідно.
Швидкість, з якою турист почне наздоганяти теплохід, — (V3-V1)km за годину, де V3—швидкість, з якою турист попливе навздогін теплохода. Час, який буде у туриста для наздоганяння, (Y-N + Z) годин, тому що зупинка в теплохода буде за розкладом через Угодин після початку руху, але N годин він уже плив, а Z годин теплохід буде стояти на цій зупинці. Тоді за цей час турист пройде відстань:
St=(V3-V1)*(Y-N+Z)
Вочевидь, турист встигне підсісти на теплохід тільки в тому випадку, якщо відстань Stбуде не менше, ніж відстань, на яку теплохід перегнав туриста. Програма, що реалізує запропонований алгоритм, має вигляд:
Program Example_10;
Uses crt;
Var Vl,V2,V3:real;
N,Y,Z : real;
Begin
Clrscr;
Write('Введіть швидкості теплоходу та туриста: ');
Readln(VI,V2);
Write ('Введіть час, через який турист підсів на теплохід:') ;
Readln(N);
Write('Введіть швидкість, з якою турист плив за теплоходом,
час зупинки теплоходу, та тривалість зупинки:') ;
Readln(V3,Y,Z);
If (Vl<=0)or(V2<=0)or(V3<=0)or(N<=0)or(Y<=0)or(Z<=0)
Then writeln('Помилкові вхідні дані')
Else
Begin
S: = (V1+V2)*N;
St: = (V3-Vl)*(Y-N+Z) ;
If St>=S
Then writeln('Турист встигне на теплохід.')
Else writeln(хТурист не встигне на теплохід.');
End;
Readkey;
End.
Приклад № 11
Жили собі дід і баба, і був у них город прямокутної форми. Довжина городу була А м, а ширина складала В м. Якось дід посварився з бабою і вирішив поділити город порівну. Тепер у діда квадратний город зі стороною С м, відрізаний скраю, а решта дісталася бабі. Визначити, чи не залишилася баба ошуканою та якої форми дістався їй город - прямокутної чи квадратної?
Взагалі задача має дуже простий розв'язок: адже бабуся не буде ошуканою в тому випадку, якщо площа городу, що залишилася для неї, не буде меншою, ніж площа дідусевого городу, тобто
C2<=а В-С2
Та це тільки на перший погляд. Насправді в даній задачі може бути велика кількість винятків.
Наприклад, якщо дідусь захоче відрізати собі город зі стороною більшою, ніж сторона загального городу, то це неможливо зробити взагалі. Якщо ж він відріже, то город, що залишиться, може мати квадратну (варіант А), прямокутну (варіант Б) або іншу форми (вариант В) (дивись малюнок):
Програма, що реалізує запропонований алгоритм, має вигляд:
Program Example_11;
Uses crt;
Var А,В,С:real;
Begin
Clrscr;
Write ('Введіть розміри городу: ');
Readln(А,В);
Write('Введіть довжину сторони дідусевого городу: ');
Readln(С);
If (A<=0)or(B<=0)or(C<=0) Then writeln ('Помилкові вхідні дані')
Else
Begin
If (OA) or (OB)
Then writeln('Дідусь не зможе відрізати город такого розміру')
Else
Begin
If A*B-sqr(C)<=sqr(С) then writeln('Бабуся ошукана.')