Sin X;
Cos X;
Tg X.
Program Example_160;
Uses crt;
Var N:byte; {N – номер функції, що обчислюється}
X,Y:real; {X – значення змінної, Y – значення
функції}
Begin
Clrscr; {Очищення екрану}
Write(‘Введіть значення Х: ’);
Readln(Х);
Write(‘Введіть номер функції, що обчислюється: ’);
Writeln(‘1 - sin’);
Writeln(‘2 - cos’);
Writeln(‘3 - tg’);
Readln(N);
Writeln(‘Результат обчислень:’)
Case N of
1: begin Y:=sin(X); writeln(‘sin(x)=’,Y:8:2); end;
2: begin Y:=cos(X); writeln(‘cos(x)=’,Y:8:2); end;
3: begin Y:=sin(X)/cos(X); writeln(‘tg(x)=’,Y:8:2);
end;
Else writeln(‘Помилка вхідних даних.’);
End;
Readkey; {Затримка зображення на екрані до
натискання будь якої клавіші}
End.
№164. Розробити алгоритм-"лотерею", який, використовуючи генератор випадкових чисел, визначатиме призи:
1) комп'ютер;
2) принтер;
3) сканер;
4) компакт-диск;
5) набір дискет.
Program Example_164;
Uses crt;
Var N:byte; {N – генерований номер лотереї}
Begin
Clrscr; {Очищення екрану}
Randomize; {Процедура, що примушує програму
генерувати при кожному новому
запуску програми нові числа}
N:=random(4)+1;
Write(‘Вітаємо! Ви виграли ’)
Case N of
1: writeln(‘комп’ютер!!!’);
2: writeln(‘принтер!!!’);
3: writeln(‘сканер!!!’);
4: writeln(‘компакт-диск!!!’);
5: writeln(‘набір дискет!!!’);
End;
Readkey; {Затримка зображення на екрані до
натискання будь якої клавіші}
End.
№165. Дано натуральне число N (N <= 100), яке позначає вік людини. Додати до цього числа відповідно слова: "рік", "роки", "років", наприклад: 1 рік, 12 років, але 43 роки.
Program Example_165;
Uses crt;
Var Years:byte; {Years – вік людини}
Begin
Clrscr; {Очищення екрану}
Write(‘Введіть Ваш вік: ’);
Readln(Years);
Write(‘Вам ’,Years);
If (Years>=10) and (Years<=20)
Then writeln(‘років’)
Else
Case Years mod 10 of
1: writeln(‘рік.’);
2..4: writeln(‘роки.’);
0,5..9: writeln(‘років.’);
End;
Readkey; {Затримка зображення на екрані до
натискання будь якої клавіші}
End.
Цикли
№177. Ненажера Стецько пробрався перед обідом у шкільну їдальню, де вже були накриті столи, і почав швиденько з'їдати ще тепленьки булочки, що стояли на столах. З першого столу він з'їв x1 булочок, з другого - х2, і, відповідно, з останнього - xn булочок. Але за ним стежив черговий по їдальні Андрійко та ретельно все фіксував на своєму калькуляторі: до булочок, з'їдених з першого столу, додав кількість булочок, що зникли з другого столу, і т.д. Допоможіть крок за кроком відтворити інформацію, яку дістав Андрійко на своєму калькуляторі.
Program Example_177;
Uses crt;
Var I,N:word; {I – параметр циклу, N –
кількість столів в їдальні,
тобто кількість повторень}
Sum,X:word; {X – кількість булочок на
черговому столі їдальні, Sum –
загальна кількість булочок, що
з’їв Стецько}
Begin
Clrscr;
Sum:=0; {На початку роботи програми Стецько
ще нічого не з’їв}
Write(‘Введіть кількість столів в їдальні: ’);
Readln(N);
For I:=1 to N do
Begin
Write(‘Введіть кількість булочок на
черговому столі: ’);
Readln(X);
Sum:=Sum+X;
Writeln(‘На даний момент Стецько з”їв
’,Sum,’ булочок.’);
End;
Readkey; {Затримка зображення на екрані}
End.
№183. Компанія бабусь поїхала на мотоциклах на курси комп'ютерної грамотності. Попереду на мотоциклі без глушника їхала одна бабуся, за нею - дві, потім - три і т.д. Скільки бабусь їхало на заняття, якщо приголомшені пішоходи всього нарахували N рядів? Чи змогли бабусі зайняти всі місця у класі, якщо там стояло k рядів по l комп'ютерів в кожному? Скільки вільних місць залишилося?
Program Example_183;
Uses crt;
Var I,N,Sum:word; {I – параметр циклу, N –
кількість рядів мотоциклів,
тобто кількість повторень, Sum –
загальна кількість бабусь, що
приїхали на курси}
Place,k,l:word; {k – кількість рядів в
комп’ютерному класі, l –
кількість комп’ютерів в
кожному ряду, Place – кількість
місць, що вистачила для бабусь}
Begin
Clrscr;
Sum:=0;
Write(‘Введіть кількість рядів мотоциклів, що
нарахували пішоходи: ’);
Readln(N);
For I:=1 to N do Sum:=Sum+I;
Writeln(‘Кількість бабусь, що приїхала на курси ’,Sum);
Writeln(‘Кількість комп”ютерів на курсах ’,k*l);
If Sum < k*l Then writeln(‘Бабусі не змогли зайняти всі місця.’)
Else writeln(‘Бабусі зайняли всі місця.’);
Place:=Sum – k*l;
If Place>0
Then writeln(‘Бабусям не вистачило ’,Place,’місць.’);
Readkey; {Затримка зображення на екрані}
End
Прості цикли
№179.На дверях ліфта висіло загрозливе попередження про те, що двері зачиняються самі в той самий момент, коли зайвий за вагою пасажир переступить поріг ліфта. Котрий пасажир постраждає, якщо ліфт витримує вагу не більше S кг, а вага пасажирів, що стоять у черзі до ліфта, дорівнює відповідно a1, a2, a3, … an?
Program Example_179;
Uses crt;
Var N:word; {I – номер пасажира, що увійшов у
ліфт}
Sum,A,S:real; {Sum – сумарна вага пасажирів, що
знаходяться в ліфті, A – вага
чергового пасажира, що увійшов до
ліфта, S – критична вага, що може
бути піднята ліфтом}
Begin
Clrscr;
Sum:=0; {На початку роботи програми в ліфті
N:=0; немає пасажирів}
Write(‘Введіть критичну вагу, що піднімає ліфт: ’);
Readln(S);
Repeat
Write(‘Введіть вагу чергового пасажира: ’);
Readln(А);
Sum:=Sum+А;
N:=N+1;
Until Sum>S;
Writeln(‘Постраждає ’,N,’-й пасажир.’);
Readkey; {Затримка зображення на екрані}
End.
№180. Коли Василині Премудрій виповнилося 18 років, Чахлик Невмирущий вирішив взяти її заміж. Василина запитала Чохлика, скільки у нього скринь із золотом. Чахлик сказав, що в нього зараз n скринь і щороку додається ще по m скринь. Василина пообіцяла, що вийде заміж тоді, коли у Чохлика буде k повних скринь із золотом. Скільки років буде тоді нареченій?
Program Example_180;
Uses crt;
Var m,n,k:word; {n – початкова кількість скринь з
золотом, m – щорічний “прибуток”
Чахлика Невмирущого, k – “потреби”
Василини Премудрої}
Sum,Years:word; {Sum – щорічне накопичення Чахлика
Невмирущого, Years – вік Василини
Премудрої}
Begin
Clrscr;
Write(‘Введіть початкову кількість скринь з золотом: ’);
Readln(n);
Write(‘Введіть щорічний прибуток Чахлика: ’);
Readln(m);
Write(‘Введіть “потреби” Василини Премудрої: ’);
Readln(k);
Sum:=n; {Початковий “капітал” Чахлика}
Years:=18; {Початковий вік Василини}
While Sum<=k do
Begin
Sum:=Sum+m;
Years:=Years+1;
End;
Writeln(‘Василині вже виповнилося ’,Years,’ років.‘);
Readkey; {Затримка зображення на екрані}
End.
№181. Капосний папуга навчився висмикувати у дідусі Василя волосся, яке ще залишилося у того на голові. Почавши з однієї волосини, він щодня збільшував порцію вдвічі. Через скільки днів дідусеві не знадобиться гребінець, якщо спочатку в нього на голові було аж N волосин?
Program Example_181;
Uses crt;
Var S,N,Sum:longint; {S – кількість волосся, що буде
висмикнуто, Sum – кількість
волосся, що залишилося в
дідуся на голові, N –
початкова кількість волосся}
Day:word; {Day – номер дня, який папуга
знущається над дідусем}
Begin
Clrscr;
Write(‘Введіть початкову кількість волосся в дідуся
на голові: ’);
Readln(N);
If N=0
Then writeln(‘Дідусь вже лисий, папузі нічого робити!’)
Else
begin
Day:=0;
Sum:=N;
S:=1; {Початкова кількість волосся, що
буде висмикнутою капосним папугою}
Repeat
Sum:=Sum-S; {Зменшення дідусевого волосся}
S:=S*2;
Day:=Day+1; {Підрахунок номера дня}
Until Sum<=0;
Writeln(‘Папуга знущався над дідусем ’,Day,’ днів.’);
End;
Readkey; {Затримка зображення на екрані}
End.
№189(2). Знайти значення (1 + 0.1)(2 + 0.2)...(9 + 0.9)
Program Example_189_2;
Uses crt;
Var I:word; {I – параметр циклу}
Rez:real; {Rez – результат обчислень}
Begin
Clrscr;
Rez:=1; {Початкове значення дорівнює 1, тому що
результат являється накопиченням
добутку}
For I:=1 to 9 do Rez:=Rez*(I+0.1*I);
Writeln(‘Rez= ’,Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
№190(1). Дано ціле n. Визначити n!
Program Example_190_1;
Uses crt;
Var I,n:word; {I – параметр циклу}
Factorial:longint; {Factorial – результат
обчислень}
Begin
Clrscr;
Factorial:=1; {Початкове значення дорівнює 1, тому
що результат являється накопиченням
добутку}
Write(‘Введіть значення n: ’);
Readln(n);
For I:=1 to n do Factorial:=Factorial*I;
Writeln(‘Factorial= ’,Factorial:8:2);
Readkey; {Затримка зображення на екрані}
End.
№190(3). Дано ціле n. Визначити 1*3*5*7*…*(2n+1).
Program Example_190_3;
Uses crt;
Var I,n:word; {I – параметр циклу}
Rez:longint; {Rez – результат обчислень}
Begin
Clrscr;
Rez:=1; {Початкове значення дорівнює 1, тому
що результат являється накопиченням
добутку}
Write(‘Введіть значення n: ’);
Readln(n);
For I:=0 to n do Rez:=rez*(2*I+1);
Writeln(‘Rez= ’,Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
Задача №190(6). Дано ціле n. Визначити sin(1)*sin(1+2)*…*sin(1+2+…+n).
Program Example_190_6;
Uses crt;
Var I,n:word; {I – параметр циклу}
Rez,Sum:longint; {Rez – результат обчислень,
Sum – проміжне накопичення}
Begin
Clrscr;
Rez:=1; {Початкове значення дорівнює 1, тому
що результат являється накопиченням
добутку}
Sum:=0; {Початкове значення дорівнює 0, тому
що результат являється накопиченням
суми}
Write(‘Введіть значення n: ’);
Readln(n);
For I:=1 to n do
Begin
Sum:=Sum+I; {Накопичення суми}
Rez:=Rez*sin(Sum); {Накопичення добутку}
End;
Writeln(‘Rez= ’,Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
№191(1). За даним натуральним значенням змінної n обчислити .
Program viraz;
Uses crt;
Var n, i: integer;
d,ch: real;
Begin
Clrscr;
Write(‘Введіть число n: ’);
Readln(n);
d:=1; ch:=0;
for i:=1 to n do
begin
ch:=ch+i;
d:=d*ch/cos(ch);
end;
Writeln(‘d=’, d);
Readln;
End.
№191(6). За даним натуральним значенням змінної n обчислити:
Program Example_191_6;
Uses crt;
Var I,n:word; {I – параметр циклу}
Rez:real; {Rez – результат обчислень}
Begin
Clrscr;
Rez:=0; {Початкове значення дорівнює 0, тому
що результат являється накопиченням
суми}
Write(‘Введіть значення n: ’);
Readln(n);
For I:=1 to n do
Begin
Rez:=sqrt(Rez+2);
End;
Writeln(‘Rez= ’,Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
№197(1). Дано натуральне число n. Визначити кількість цифр у цьому числі.
Program Example_197_1;
Uses crt;
Var N:longint; {N – задане число}
Count:byte; {Count – кількість цифр в числі}
Begin
Clrscr;
Write(‘Введіть натуральне число: ’);
Readln(N);
N:=abs(N); {Знаходження модуля числа для
позбавлення від помилкового введення
ненатурального числа}
Count:=0; {Початкове значення кількості цифр}
Repeat
Count:=Count+1;
N:=N div 10; {“Відкидання” останньої цифри
числа після підрахунку}
Until N = 0;
Writeln(‘Кількість цифр в числі = ’,Count);
Readkey; {Затримка зображення на екрані}
End.
№197(2). Дано натуральне число n. Визначити суму цифр в числі.
Program Example_197_2;
Uses crt;
Var n:longint; {N – дане число}
Sum:byte; {Sum – сума цифр числа}
Begin
Clrscr;
Sum:=0; {Сума цифр числа спочатку дорівнює 0}
Write(‘Введіть ціле число: ’);
Readln(N);
N:=abs(N);
While N>0 do
Begin
Sum:=Sum+N mod 10; {Знаходження суми цифр}
N:=N div 10; {“Відкидання” останньої
цифри числа }
End;
Writeln(‘Sum= ’,Sum);
Readkey; {Затримка зображення на екрані}
End.
№200(2). Дано дійсне число а. Знайти таке найменше n, що .
Program Example_200_2;
Uses crt;
Var n:word; {n – шукане число}
Rez,a:real; {Rez – результат обчислень, а –
граничне значення}
Begin
Clrscr;
n:=1; {Початкове значення n - 1}
Write(‘Введіть значення a: ’);
Readln(a);
Rez:=0; {Початкове значення суми}
While Rez<=a do
Begin
Rez:=Rez+1/n;
n:=n+1;
end;
Writeln(‘n= ’,n);
Readkey; {Затримка зображення на екрані}
End.
№203(2). Знайти найбільше додатне число n, для якого виконується умова: .
Program Example_203_2;
Uses crt;
Var n:word; {n – шукане число}
Begin
Clrscr;
n:=1;
While –4*n+841*sqrt(n)+3>=0 do n:=n+1;
Writeln(‘n= ’,n);
Readkey; {Затримка зображення на екрані}
End.
№204. Дано ціле число m>1. Знайти найбільше число k, при якому виконується умова 4k < m.
Program Example_204;
Uses crt;
Var m,k,Rez:longint; {Rez – обчислення степеню 4}
Begin
Clrscr;
Write(‘Введіть значення m (m>1): ’);
Readln(m);
Rez:=1;
k:=0;
While Rezdo
Begin
k:=k+1;
Rez:=Rez*4;
End;
Writeln(‘k= ’,k);
Readkey; {Затримка зображення на екрані}
End.
№208(1). Під час обчислення результатів деяких експериментів виникає необхідність отримання результату із заданою похибкою. Нехай результатом є нескінченна сума, що задається певною формулою, і відома похибка e (e > 0) для знаходження наближеного значення результату. Будемо вважати, що необхідна точність досягнута, коли додавання наступного доданку змінює суму на величину, меншу за e. Обчислити:
Program Example_208_1;
Uses crt;
Var i:word;
Rez,Epsilon:real; {Rez – результат обчислень,
Epsilon - похибка}
Begin
Clrscr;
Rez:=0; {Початкове значення дорівнює 0, тому
що результат являється накопиченням
суми}
Write(‘Введіть значення похибки (Е>0): ’);
Readln(Epsilon);
i:=1;
While 1/sqr(i)>Epsilon do
Begin
Rez:=Rez+1/sqr(i)
i:=i+1;
End;
Writeln(‘Rez= ’,Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
№210. Дано ціле число n, яке набуває значень шкільних оцінок. Визначити відповідною кількістю звукових сигналів, яка саме оцінка була задана ("1" - один звуковий сигнал, "2" - два звукових сигнали і т.д.). Якщо ж задане число не відповідає значенню шкільної оцінки - подати довгий звуковий сигнал.
Program Example_210;
Uses crt;
Var I,n:word; {I – параметр циклу, n – оцінка учня}
Time:word;
Begin
Clrscr;
Write(‘Введіть Вашу оцінку: ’);
Readln(n);
Time:=10000; {Значення цієї змінної залежить
від характеристик комп’ютера, за
яким працює учень, і може бути
підібрана практичним шляхом}
If (n<1) or (n>12)
Then
begin
writeln(‘Ви помилились, такої оцінки не
існує’);
sound(200);
end
Else
For I:=1 to n do
Begin
Sound(200);
Delay(time);
Nousound;
Delay(time);
End;
Readkey; {Затримка зображення на екрані}
End.
№212.Обчислити значення числа p, використовуючи формулу
Program Example_212;
Uses crt;
Var i,n:word; {і – параметр циклу, n – кількість
доданків}
Rez_Pi:real; {Rez_Pi – обчислене значення числа
Pi}
Begin
Clrscr;
Rez_Pi:=0;
i:=1; {i – значення знаменника першого доданка}
n:=0; {n – доданків ще нема}
while round(pi*1000)=round(Rez_Pi*4000) do
Begin
If n mod 2 = 0
Then Rez_Pi:=Rez_Pi+1/i
Else Rez_Pi:=Rez_Pi-1/i;
i:=i+2;
n:=n+1;
End;
Writeln(‘Кількість необхідних доданків - ’,n);
Writeln(‘Порівняйте значення Pi: ’);
Writeln(‘Результат обчислень програми: ’,Rez_Pi:8:3);
Writeln(‘Вбудована функція: ’,Pi:8:3);
Readkey; {Затримка зображення на екрані}
End.
№208(4). Під час обчислення результатів деяких експериментів виникає необхідність отримання результату із заданою похибкою. Нехай результатом є нескінченна сума, що задається певною формулою, і відома похибка e (e > 0) для знаходження наближеного значення результату. Будемо вважати, що необхідна точність досягнута, коли додавання наступного доданку змінює суму на величину, меншу за e. Обчислити:
Program Example_208_4;
Uses crt;
Var i:word; {i – номер доданка}
S,Sum:real; {S – черговий доданок, Sum –
нескінченна сума}
Epsilon:real; {Epsilon – задана похибка
обчислень}
Begin
Clrscr;
Write(‘Введіть значення похибки: ’);
Readln(Epsilon);
Sum:=0; {Початкове значення дорівнює 0 для
накопичення суми}
S:=1; {Перший доданок нескінченної суми за
умовою дорівнює “1”}
i:=1;
repeat
if i mod 2 =0
then Sum:=Sum + 1/S
else Sum:=Sum - 1/S;
i:=i+1;
S:=S*i;
until 1/S<=Epsilon;
Writeln(‘Результат обчислень = ’,Sum:8:2);
Readkey; {Затримка зображення на екрані}
End.
№209.На скільки років необхідно покласти в банк суму Х грошових одиниць, щоб одержати суму N грошових одиниць (N > X), якщо банк нараховує 200% річних?
Program Example_209;
Uses crt;
Var X,N:real; {X – початковий вклад, N – бажана
сума}
Rez:real; {Rez – результуюча сума на
рахунку}
Years:longint; {Years – термін, протягом якого
сума лежала в банку}
Begin
Clrscr;
Write(‘Введіть початкову суму вкладу: ’);
Readln(Х);
Write(‘Введіть бажану суму вкладу: ’);
Readln(N);
If N<=X
Then writeln(‘Ви вже маєте бажану суму!’)
Else
Begin
Rez:=X;
Years:=0;
Repeat
Rez:=3*Rez; {200% річних збільшують за рік
вклад втричі}
Years:=Years+1;
Until Rez>=N;
Writeln(‘Ви отримаєте бажану суму через ’,years,’ років.‘);
End;
Readkey; {Затримка зображення на екрані}
End.
Поєднання повторення і розгалуження
№231.Скласти програму, яка б допомогла працівникам ДАІ визначати кількість порушників перевищення швидкості на трасі, якщо відомо, що на даному проміжку траси встановлено обмеження на швидкість Vmax, а прилад фіксує швидкість автомобілів V1, V2, …, Vn.
Program Example_231;
Uses crt;
Var V,Vmax:real; {V – швидкість чергового водія,
Vmax – максимально дозволена
швидкість}
Count:longint;{Count – кількість порушників}
Begin
Clrscr;
Count:=0; {На початку роботи порушники відсутні}
Write(‘Введіть значення максимально дозволеної швидкості: ’);
Readln(Vmax);
Vmax:=abs(Vmax); {Знаходження модуля для
виключення помилки введення
від’ємної максимальної
швидкості}
Repeat
Write(‘Введіть значення швидкості чергового водія: ’);
Readln(V);
If V>Vmax then Count:=Count+1;
Until V<=0;
Writeln(‘Кількість порушників ’,Count);
Readkey; {Затримка зображення на екрані}
End.
№234(2). Дано натуральні числа n i a1, a2, …, an. Визначити кількість членів ak послідовності a1, a2, …, an, що кратні числу 3 і не кратні числу 7.
Program Example_234_2;
Uses crt;
Var n:word; {n – кількість чисел, що вводяться}
a,count:word; {a – змінна, що зберігає чергове
введене число; count – кількість
чисел, що задовольняє заданій
умові}
Begin
Clrscr;
count:=0; {На початку роботи кількість
знайдених чисел дорівнює 0}
Write(‘Введіть кількість чисел, що будуть вводитись: ’);
Readln(n);
Repeat
Write(‘Введіть чергове число: ’);
Readln(a);
If (a mod 3 = 0) and (a mod 7 <> 0)
Then count:=count+1;
n:=n-1;
Until n<0;
Writeln(‘Кількість шуканих чисел = ’,count);
Readkey; {Затримка зображення на екрані}
End.
№239. Дано натуральне число п і дійсні числа . Визначити max() .
program max;
var
a,max:real;
i,n:integer;
begin
Write('n=');
Read(n);
Write('a1=');
Read(a);
max:=a;
for i:=2 to n do
begin
Write('a',i, '=');
Read(a);
if a>max then
begin
max:=a;
end
end;
Write('max=',max:7:3);
readln;
end.
№251 (5). Дано натуральне число n і дійсні числа a1, a2, …, an (a1 < > 0). Відомо, що в заданій послідовності є хоча б одне нульове значення. Розглядаючи члени послідовності, що розташовані до першого нульового члена, визначити середнє арифметичне членів.
Program Example_251_5;
Uses crt;
Var count:word; {count – кількість членів
послідовності до першого нульового
елемента}
a,Sum:real; {a – черговий член послідовності,
Sum – сума членів послідовності до
першого “0”}
SA:real; {SA – середнє арифметичне}
Begin
Clrscr;
Sum:=0;
count:=0; {Початкові значення дорівнюють “0”}
repeat
write(‘Введіть черговий член послідовності: ’);
readln(a);
Sum:=Sum+a;
count:=count+1;
until a=0;
SA:=Sum/(count-1);
Writeln(‘Середнє арифметичне = ’,SA:8:2);
Readkey; {Затримка зображення на екрані}
End.
№ 417. Баба-Яга записалася на курси водіїв літальних апаратів. Але справи в неї були кепські, бо вона ніяк не могла запам'ятати, яким чином визначається тривалість польоту, якщо відомі швидкість і відстань. Довелося їй звернутися по допомогу до Хлопчика-Мізинчика, який швиденько написав їй шпаргалку, куди Бабі-Язі треба було лише підставити свої значення. Як виглядала послідовність дій у цій шпаргалці і як нею користувалася Баба-Яга?
Program Example_417;
Uses crt; {Підключення бібліотеки}
Procedure Solution (V,S - real; var T - time);
Begin
T:=S/V;
End;
Var X,Y,M:real;
Begin
Clrscr;
Write('Введіть швидкість літального апарату: ');
Readln(X);
Write('Введіть відстань між населеними пунктами: ');
Readln(Y);
If (X<=0) or (Y<0)
then writeln('Некоректні вхідні дані.')
else
begin
Solution(X,Y,M); {Виклик процедури}
Writeln('Тривалість польоту -> ',M:6:2);
end;
Readkey;
End.
№ 423 (модифікована). У Білосніжки наближався день народження і її вирішили привітати друзі. Перш за все це були гноми, далі зібралися звірята, а потім і пташки прилетіли. Кожен з гостей приніс квіти, кількість яких зберігається у відповідному масиві: а1, а2,... an - квіти гномів, b1, b2, … bm - квіти звірят та c1, c2, …, ck - квіти пташок. Хто з гостей (гноми, звірята чи пташки) приніс найбільшу кількість квітів? Який з гномів, звірят та пташок найщедріший?
Program Example_423;
Uses crt; {Підключення бібліотеки}
{Опис типу для масиву}
const
L = 100;
Type
T_Mas = array[1..L] of integer;
{Процедура заповнення масиву генератором випадкових чисел з контрольним виведенням на екран вмісту заповненого масиву}
Procedure Input (var MAS:T_Mas; count:integer);
var i:integer;
begin
for i:=1 to count do
begin
MAS[i]:=round(100); {Заповнення масиву
генератором випадкових чисел}
write(MAS[i]:6);
end;
writeln;
end;
{Процедура знаходження суми елементів та максимуму в заданому масиві; count - кількість елементів в масиві, що необхідно обробити}
Procedure Solution (MAS:T_Mas; count:integer;
var SUM,MAX:longint);
Var i:integer;
Begin
SUM:=0; {Початкові значення }
MAX:=MAS[1];
For i:=1 to count do
begin
SUM:=SUM+MAS[i];
if MAX<MAS[i]
then MAX:=MAS[i];
end;
End;
{Процедура пошуку максимуму в масиві}
Procedure Search_Max(M:array of longint;
var n_max:integer);
var i,Maximum:integer;
begin
Maximum:=M[0]; n_max:=0;
for i:=0 to 2 do
if Maximum<M[i]
then
begin
Maximum:=M[i];
n_max:=i;
end;
n_max:=n_max+1;
end;
Var A,B,C:T_Mas;
n,m,k,number:integer;
S,Max:array[1..3] of longint;
Begin
Clrscr;
Writeln('Введіть кількість гостей на дні народження');
Write('Кількість гномів: ');
readln(n)
Input(A,n);
Write('Кількість звірят: ');
readln(M)
Input(B,m);
Write('Кількість пташок: ');
readln(k)
Input(C,k);
Solution(A,n,S[1],M[1]);
Solution(B,m,S[2],M[2]);
Solution(C,k,S[3],M[3]);
{Вибір, хто (гноми, звірята чи пташки) принесли
найбільшу кількість квітів}
Search_Max(S,number);
Case number of
1: Write('Гноми');
2: Write('Звірята');
3: Write('Пташки');
End;
write(' принесли найбільше квітів.');
writeln;
write('Самий щедрий гість перебуває у ');
{Вибір, де (у гномів, звірят чи пташок)
перебуває найщедріший гість}
Search_Max(M,number);
Case number of
1: Write(' гномів.');
2: Write(' звірят.');
3: Write(' пташок.');
End;
Readkey;
End.
№ 427. Організувати зміну кольору екрана для покрокового введення текстової інформації - прізвище, ім'я, школа, клас - за допомогою власної підпрограми COLOR_PAGE. Для вибору номера кольору скористатися генератором випадкових чисел.
Program Example_427;
Uses crt; {Підключення бібліотеки}
Procedure Solution (S:string; var R:string);
Begin
textbackground(Random(14)+1);
clrscr;
textcolor(Random(14)+1);
gotoxy(20,10);
writeln('Введіть ',S);
gotoxy(20,11);
readln(R);
End;
Var A:string;
Begin
Solution('своє прізвище',A);
Solution('своє ім"я',A);
Solution('школу, де Ви навчаєтесь',A);
Solution('свій клас',A);
Readkey;
End.
№ 463. Створити підпрограму, яка б із тексту S вилучала вказаний символ х і обчислювала кількість вилучень. У програмі організувати виклик цієї підпрограми.
Program Example_463;
Uses crt; {Підключення бібліотеки}
Procedure Solution (x:char; var S:string;
var count:byte);
var i:byte; {локальна змінна для організації
циклу}
Begin
count:=0; i:=1;
while i<=length(S) do
begin
if S[i]=x
then
begin
count:=count+1;
delete(S,i,1);
end
else i:=i+1;
end;
End;
Var A:string; ch:char; N:byte;
Begin
clrscr;
writeln ('Введіть текст: ');
readln(A);
write ('Введіть шуканий символ: ');
readln (ch);
Solution(^ch,A,N);
writeln ('Результуючий текст: ',A);
writeln ('Кількість виконаних вилучень: ',N);
readkey;
End.
№ 420. П'ятеро бравих солдатів служили у війську під командуванням сержанта. Перед сержантом було поставлено завдання розробити стратегію визначення чотирьох вояк для штурму фортеці супротивника. Досвідчений сержант вирішив визначати найкращу четвірку за таким правилом: відношення суми ваги вояків до добутку їх зросту повинно бути максимальним. Хто з п'яти служак був удостоєний честі захищати своє військо?
Program Example_420;
Uses crt; {Підключення бібліотеки} Mas
Type
T_Mas = array [1..5,1..2] of real;
Function Solution (Mas:T_Mas):byte;
var i:byte;
Min:real;
Begin
Min:=Mas[1,1]*Mas[1,2];
Solution:=1;
for i:=2 to 5 do
if Min > Mas[i,1]*Mas[i,2]
then
begin
Min:=Mas[i,1]*Mas[i,2];
Solution:=i;
end;
End;
Var Soldat:T_Mas;
Number,i:byte;
Begin
Clrscr;
{Заповнення масиву та виведення його на екран}
For i:=1 to 5 do
begin
Soldat[i,1]:=random*100+50;
Soldat[i,2]:=random*0.8+1.5;
writeln(Soldat[i,1]:8:2,Soldat[i,2]:6:2);
end;
writeln ('Не пішов на штурм ',Solution(Soldat),'-й солдат.');
Readkey;
End.
№ 432. Використовуючи функцію max2(a,b), яка визначає максимальне з двох даних чисел, записати функцію max3(a,b,c), що визначає максимальне з трьох даних чисел, і організувати виклик цієї функції для обчислення суми найбільших значень трьох трійок довільних дійсних чисел.
Program Example_432;
Uses crt; {Підключення бібліотеки}
Function Max2 (a,b:real):real;
begin
if a > b
then Max2:=a
else Max2:=b;
end;
Function Max3 (a,b,c:real):real;
Var Max:real;
Begin
Max:=Max2(a,b);
Max3:=Max2(Max,c);
End;
Var x,y,z,Rezultat:real;
Begin
Clrscr;
writeln ('Введіть три довільні числа: ');
readln (x,y,z);
Rezultat:=Max3(x,y,z);
Rezultat:=Rezultat+Max3(2,-4.5,12.54);
Rezultat:=Rezultat+Max3(abs(x),abs(y),abs(z));
writeln ('Результат -> ',Rezultat:8:2);
Readkey;
End.
№ 437. Дано дійсні числа u та v. Визначити значення: z = f(u,v) + f (u+v,uv) + f(u2,v2) + f(0.1,0.1)
Де
Program Example_437;
Uses crt; {Підключення бібліотеки}
Function F(x,y:real; var Rez:real):boolean;
Begin
if (x=0) and (y=0)
then F:=false
else
begin
F:=true;
Rez:=(x+y)/(x*x+x*y+y*y)+x/(1+sqr(y))+y/(1+sqr(x));
end;
End;
Var u,v,R:real;
Solution:Boolean;
Begin
Clrscr;
writeln('введіть два числа: ');
readln(u,v);
Solution:=F(u,v,R)+F(u+v,u*v,R)+
F(sqr(u),sqr(v),R)+F(0.1,0.1,R);
if F(u,v) = false
then writeln('Помилкові вхідні дані.')
else writeln('Результат обчислень -> ',R:8:2);
Readkey;
End.
№ 452.Дано координати вершин двох трикутників. Визначити, який з них має більшу площу.
Program Example_452;
Uses crt; {Підключення бібліотеки}
{Обчислення довжини відрізка з координатами кінців (a,b) та (c,d)}
Function Len (a,b,c,d:real):real;
Begin
Len:=sqrt(sqr(a-b)+sqr(c-d));
End;
Function Input(var x1,y1,x2,y2,x3,y3:real):boolean;
Var a,b,c:real;
Begin
writeln ('Введіть координати першої вершини:');
readln (x1,y1);
writeln ('Введіть координати другої вершини:');
readln (x2,y2);
writeln ('Введіть координати третьої вершини:');
readln (x3,y3);
a:=Len(x1,y1,x2,y2);
b:=Len(x1,y1,x3,y3);
c:=Len(x3,y3,x2,y2);
if (a>=b+c) or (c>=a+b) or (b>=a+c)
then
begin
Len:=False;
writeln ('Помилка! Повторіть введення:');
end
else Len:=True;
End;
Function S (a,b,c:real):real;
Function P (x,y,z:real):real;
Begin
P:=x+y+z;
End;
Var PP:real;
Begin
PP:=P(x,y,z)/2;
S:=sqrt(PP*(PP-a)*(PP-b)*(PP-c));
End;
Var x11,y11,x12,y12,x13,y13:real;
x21,y21,x22,y22,x23,y23:real;
S1,S2:real;
Flag:Boolean;
Begin
clrscr;
repeat
writeln ('Перший трикутник:');
Flag:=Input(x11,y11,x12,y12,x13,y13);
until Flag;
repeat
writeln ('Другий трикутник:');
Flag:=Input(x21,y21,x22,y22,x23,y23);
until Flag;
S1:=S(x11,y11,x12,y12,x13,y13);
S2:=S(x21,y21,x22,y22,x23,y23);
if S1>S2
then
begin
writeln ('Більшу площу має перший трикутник.');
writeln ('Його площа дорівнює -> ',S1:8:2);
end
else
if S2>S1
then
begin
writeln ('Більшу площу має другий трикутник.');
writeln ('Його площа дорівнює -> ',S2:8:2);
end
else
begin
writeln ('Трикутники мають однакову площу.');
writeln ('Їх площа дорівнює -> ',S1:8:2);
end;
readkey;
End.
№ 440. Використовуючи підпрограму обчислення факторіалу, розробити програму обчислення суми факторіалів усіх цілих чисел від 1 до 10.
Program Example_440;
Uses crt; {Підключення бібліотеки}
Function Factorial (n:integer):longint;
Begin
if n=0
then Factorial:=1
else Factorial:=Factorial(n-1)*n;
End;
Var Rez:longint;
i:byte;
Begin
Clrscr;
Rez:=0;
For i:=1 to 10 do
begin
Rez:=Rez+Factorial(i);
end;
writeln('Rezultat -> ',Rez);
Readkey;
End.
№ 495. Знайти найбільший спільний дільник двох натуральних чисел n та m за алгоритмом Евкліда:
Program Example_495;
Uses crt; {Підключення бібліотеки}
Function Evklid (n,m:integer):integer;
begin
if n=m
then Evklid:=n
else
if n>m
then Evklid:=Evklid(n-m,m)
else Evklid:=Evklid(n,m-n);
end;
Var x,y:integer;
Begin
Clrscr;
writeln ('Введіть два числа: ');
readln (x,y);
writeln ('НОД -> ',Evklid(abs(x),abs(y)));
Readkey;
End.
№ 498. Обчислити значення функції Аккермана для двох невід'ємних цілих чисел n та m, де:
Program Example_498;
Uses crt; {Підключення бібліотеки}
Function A(n,m:word):word;
Begin
if n=0
then A:=m+1
else
if (n<>0) and (m=0)
then A:=A(n-1,1)
else A:=A(n-1,A(n,m-1));
End;
Var x,y:word;
Begin
Clrscr;
writeln ('введіть два числа: ');
readln (x,y);
writeln ('Результат обчислень -> ',A(x,y));
Readkey;
End.
№ 500. Обчислити кількість комбінацій з n різних елементів по m, тобто кількість неупорядкованих підмножин з m елементів, що належать заданій множині з n елементів, скориставшись залежністю:
Program Example_500;
Uses crt; {Підключення бібліотеки}
Function C (n,m:word):longint;
Begin
if ((m=0) and (n>0)) or ((m=n) and (n>=0))
then C:=1
else
if (m>n) and (n>=0)
then C:=0
else C:=C(n-1,m-1)+C(n-1,m);
End;
Var x,y:word;
Begin
clrscr;
writeln ('Введіть два числа: ');
readln(x,y);
writeln ('Кількість комбінацій з ',x,' по',y,' -> ',C(x,y));
readkey;
End.
№383. У даному тексті всі послідовності крапок замінити на одну крапку.
Program Example_383;
Uses crt;
Var i:word; {i - змінна циклу}
St:string; {St - даний текст}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (St);
i:=1;
While i<=length(St) do
Begin
While St[i]='.' do Delete(St,i,1);
Insert('.',St,i);
i:=i+1;
End;
Writeln ('Результуючий рядок: ');
Writeln (St);
Readkey; {Затримка зображення на екрані}
End.
№384(2). Дано деякий текст, у якому є хоча б одна кома. Визначити порядковий номер останньої коми в тексті.
Program Example_384_2;
Uses crt;
Var i:byte; {i - змінна циклу}
St:string; {St - даний текст}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln(St);
i:=length(St);
while St[i]<>',' do i:=i-1;
Writeln ('Номер позиції останньої коми в тексті ',i);
Readkey; {Затримка зображення на екрані}
End.
№386. Дано деякий текст. Створити новий текст, який утворено із даного читанням з кінця до початку.
Program Example_386;
Uses crt;
Var i:byte; {i - змінна циклу}
St,Rez:string; {St - даний текст, Rez -
результуючий (перегорнутий)
рядок}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (St);
Rez:=''; {Очищення рядка}
For i:=length(St) downto 1 do
Rez:= Rez+St[i];
Writeln ('Результуючий рядок: ');
Writeln (St);
Readkey; {Затримка зображення на екрані}
End.
№387. Перевірити, чи однаково читається дане слово зліва направо і навпаки.
Program Example_387;
Var i:byte; {i - змінна циклу}
St,Rez:string; {St - даний текст, Rez -
результуючий (перегорнутий)
рядок}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (St);
Rez:=''; {Очищення рядка}
For i:=length(St) downto 1 do
Rez:= Rez+St[i]; {Перегортання рядка}
If Rez = St
Then Writeln ('Слово являється паліндромом.')
Else Writeln ('Слово не являється паліндромом.');
Readkey; {Затримка зображення на екрані}
End.
№389(2). Визначити, скільки разів у даному тексті зустрічається послідовність символів "абв".
Program Example_389;
Var i:byte; {i - змінна циклу}
St:string; {St - даний текст}
Count:byte; {Count - лічильник
послідовностей}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (St);
Count:=0; {Початкове значення лічильника}
For i:=1 to length(St)-3 do
If Copy (St,i,3) = 'абв'
Then count:=count+1;
Writeln ('Кількість шуканих послідовностей: ',count);
Readkey; {Затримка зображення на екрані}
End.
№394. Нехай дано формулу. Визначити коректність формули щодо кількості відкритих та закритих дужок. Вважається, що закриті дужки не стоять перед відкритими. Якщо дужки у формулі відсутні - повідомити про це.
Program Example_394;
Var i:byte; {i - змінна циклу}
St:string; {St - даний текст}
count_left, count_right:byte;
{count_left - лічильник кількості
лівих дужок, count_right -
лічильник кількості правих дужок}
Begin
Clrscr;
Write ('Введіть формулу: ');
Readln(St);
Count_left:=0; {Початкове значення лічильника}
Count_right:=0;
For i:=1 to length(St) do
Begin
If St[i] = '('
Then count_left:=count_left+1;
If St[i] = ')'
Then count_right:=count_right+1;
End;
Writeln ('Кількість лівих дужок: ',count_left);
Writeln ('Кількість правих дужок: ',count_right);
If (count_left=0) or (count_right=0)
Then writeln ('Формула не має дужок.')
Else
Begin
If count_left = count_right
then Writeln ('Формула коректна.')
else writeln ('Формула не коректна.');
end;
Readkey; {Затримка зображення на екрані}
End.
№397. Нехай дано текст S та значення символьних змінних x та y. Із тексту вилучити всі символи, що збігаються з x і повторити двічі всі символи, що збігаються з y.
Program Example_397;
Var i:byte; {i - змінна циклу}
S:string; {S - даний текст}
x,y:char; {x,y - шукані символи}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (S);
Write ('Введіть шукані символи: ');
Readln (x,y);
For i:=1 to length(S) do
Begin
If S[i] = x
Then delete(S,i,1);
If S[i] = ')'
Then insert(y,S,i);
End;
Writeln ('Результуючий рядок після зміни: ',S);
Readkey; {Затримка зображення на екрані}
End.
№401. Розробити програму-шифрувальник тексту, що замінює кожну його літеру наступною по порядку в абетці. Останню літеру абетки необхідно замінити першою.
Program Example_401;
Var i:byte; {i - змінна циклу}
S:string; {S - даний текст}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (S);
For i:=1 to length(S) do
Begin
If (S[i]>=65) and (S[i]<90) or
(S[i]>=97) and (S[i]<122) or
(S[i]>=128) and (S[i]<159) or
(S[i]>=160) and (S[i]<=175) or
(S[i]>=224) and (S[i]<245) or
Then S[i]:=chr(ord(S[i]+1);
If (S[i] = 'Z') or (S[i] = 'z')
Then S[i]:=chr(ord(S[i])-25);
If (S[i] = 'Я')
Then S[і]:='А';
If (S[i] = 'я')
Then S[і]:='а';
End;
Writeln ('Результуючий рядок після зміни: ',S);
Readkey; {Затримка зображення на екрані}
End.
№406(3). Дано деякий текст. Групи символів, які розділені пробілами (одним або кількома) та не містять всередині себе пробілів, називатимемо словами. Вважатимемо, що текст завжди починається зі слова. Визначити кількість слів, у яких перша та остання літера однакові.
Program Example_406;
Var i:byte; {i - змінна циклу}
S,Slovo:string; {S - даний текст, Slovo -
вирізане з тексту слово}
count:byte; {count - лічильник шуканих
слів}
Begin
Clrscr;
Write ('Введіть текст: ');
Readln (S);
S:=' '+S+' '; {Дописування проміжку перед
першим словом та після
останнього}
Count:=0; {Початкове значення лічильника}
i:=1; {Початок перегляду рядка}
while i<=length(S)-1 do
Begin
If (S[i]=' ') and (S[i+1]<>' ')
Then
Begin
Slovo:=''; {Очищення рядка для
зберігання чергового слова}
While (S[i+1]<>' ') do
Begin
Slovo:=Slovo+S[i+1];
i:=i+1;
End;
If Slovo[1] = Slovo[length(Slovo)]
Then count:=count+1;
End;
i:=i+1;
End;
Writeln ('Кількість шуканих слів: ',count);
Readkey; {Затримка зображення на екрані}
End.
№311(1). Дано одновимірний масив цілих чисел А[i], де i = 1,2,…n. Вивести елементи масиву у зворотному порядку.
Program Example_311_1;
Uses crt;
Var N,i:word; {N - кількість елементів масиву, i -
змінна циклу}
А:array [1..100] of longint; {A - заданий масив}
Begin
Clrscr;
Write ('Введіть кількість елементів масиву (<100): ');
Readln(N);
For i:=1 to N do
Begin
A[i]:=random(300); {Заповнення масиву
випадковими числами}
Write(А[i]:5); {Виведення масиву на екран
для контролю правильності
роботи програми}
End;
Writeln; {Переведення курсору на наступний
рядок}
For i:=N downto 1 do
Begin
Write (A[i]:5);
End;
Readkey; {Затримка зображення на екрані}
End.
№311(2). Дано одновимірний масив цілих чисел А[i], де i = 1,2,…n. Вивести елементи масиву з парними індексами.
Program Example_311_2;
Uses crt;
Var N,i: word; {N - кількість елементів масиву, i -
змінна циклу}
А: array [1..100] of longint; {A - заданий масив}
Begin
Clrscr;
Write ('Введіть кількість елементів масиву (<100): ');
Readln (N);
For i:=1 to N do
Begin
A[i]:=random(300); {Заповнення масиву
випадковими числами}
Write(А[i]:5); {Виведення масиву на екран
для контролю правильності
роботи програми}
End;
Writeln; {Переведення курсору на наступний
рядок}
i:=2;
while i<=N do
Begin
Write(A[i]:5);
i:=i+2; {Змінна циклу змінюється на 2, щоб
вибрати тільки парні елементи}
End;
Readkey; {Затримка зображення на екрані}
End.
№300. Барон Мюнхаузен, вийшовши на екологічно чисте полювання, зарядив свою рушницю кісточками вишень. Після того як він вдало влучив поміж роги оленям, в яких влучило відповідно k1, k2, …, kn кісточок, у них на головах виросли чудові молоді вишеньки. Скільки саджанців зміг подарувати барон Мюнхаузен садівникам-дослідникам?
Program Example_300;
Uses crt;
Var N:word; {N - кількість оленів, тобто
елементів масиву, у яких влучив
Мюнхаузен}
K:array[1..100] of longint; {K - зарезервований
масив для зберігання кількості
кісточок, що влучили в оленів}
i,Sum:longint; {i - змінна циклу, Sum - загальна
кількість кісточок, що влучили в
оленів}
Begin
Randomize; {Ця процедура запускається з метою
зробити числа генератора
випадкових чисел ще більш
"випадковими"}
Clrscr;
Sum:=0; {На початку роботи програми Мюнхаузен
ще ні в кого не влучив}
Write ('Введіть кількість оленів, в яких влучив
Мюнхаузен (<=100): ');
Readln(N);
For i:=1 to N do
Begin
K[i]:=random(50)+20; {Заповнення масиву
випадковими числами в
діапазоні від 20 до 70}
Write(K[i]:5); {Виведення масиву на екран
для контролю правильності
роботи програми}
Sum:=Sum+K[i];
End;
Writeln; {Переведення курсору на новий
рядок}
Writeln ('Кількість нових саджанців ',Sum);
Readkey; {Затримка зображення на екрані}
End.
№302. Середню групу дитячого садочка вивели на прогулянку. Скільки дівчаток і скільки хлопчиків видна з-за паркану, якщо зріст хлопчиків задається у сантиметрах від'ємними числами, а дівчаток - додатними у вигляді цілих значень a1, a2, …, an? Крім того, у всіх дівчаток на голівках зав'язані бантики заввишки 10 см, а висота паркану H см.
Program Example_302;
Uses crt;
Var N,H:word; {N - кількість дітей в дитсадочку,
Н - висота паркану}
А:array[1..100] of longint; {А - зарезервований
масив для зберігання зростів
дітей}
i,Count_girl,Count_boy:longint;
{i - змінна циклу, Count_girl -
кількість дівчаток, Count_boy -
кількість хлопців}
Begin
Randomize;
Clrscr;
Count_girl:=0;
Count_boy:=0;
Write ('Введіть висоту паркану: ');
Readln(H);
Write ('Введіть кількість дітей в дитсадочку: ');
Readln(N);
For i:=1 to N do
Begin
A[i]:=random(300)-150; {Заповнення масиву
випадковими числами в
діапазоні від -150 до +150}
Write(А[i]:5); {Виведення масиву на екран
для контролю правильності
роботи програми}
if (A[I]<0) and (abs(A[I])>H)
then Count_Boy:=Count_Boy+1;
if (A[I]>0) and (A[I]+10>H)
then Count_Girl:=Count_Girl+1;
End;
Write ('Кількість хлопчиків, що видна з-за паркану ');
Writeln (Count_Boy);
Write ('Кількість дівчаток, що видна з-за паркану,);
writelnCount_girl);
Readkey; {Затримка зображення на екрані}
End.
№309. Дано натуральне число А. Складіть програму, що представляє його у вигляді многочлена. Наприклад,
123 ==>1 * 10^2 + 2 * 10^1 + 3*10^0.
Program Example_309;
Uses crt;
Var N,i,Count:longint; {N - задане ціле число, i -
змінна циклу, Count - кількість
цифр в числі}
Cifra:array [1..10] of byte; {Cifra - масив для
зберігання цифр числа}
Begin
Clrscr;
Count:=0;
Write ('Введіть ціле число: ');
Readln (N);
While N>0 do
Begin
Cifra[i]:=N mod 10;
N:=N div 10;
Count:=Count+1;
End;
Write('N = ');
For i:=N downto 1 do
Begin
Write(Cifra[i],'*10^',i-1);
If i>1
Then write(' + '); {Якщо доданок не останній,
то до нього дописується
знак "+"}
End;
Readkey; {Затримка зображення на екрані}
End.
№312. Дано дійсні числа a1951, a1952, …, a2000 - кількість опадів (в мм), що випали у місті за останні 50 років минулого століття. Обчислити середню кількість опадів за цей період і щорічне відхилення від середнього значення.
Program Example_312;
Uses crt;
Var N,i:longint; {N - кількість елементів масиву, i
- змінна циклу}
A:array[1951..2000] of real; {A - масив для
зберігання кількості
опадів у відповідному році}
B:array[1951..2000] of real; {B - масив для
зберігання відхилення від
середнього значення}
Begin
Randomize;
Clrscr;
Sum:=0;
For i:=1951 to 2000 do
Begin
A[i]:=random(500)/7; {Заповнення масиву
випадковими дійсними числами}
Write(A[i]:8:2); {Виведення масиву на екран
для контролю правильності
роботи програми}
Sum:=Sum+K[i];
End;
Sum:=Sum/50; {Знаходження середньої кількості
опадів за рік}
Writeln;
Writeln ('Щорічні відхилення від середньої кількості опадів за період 1951 - 2000 р.р.');
For i:=1951 to 2000 do
Begin
B[i]:=Sum - A[i]; {Знаходження щорічного
відхилення}
Write(B[i]:8:2); {Виведення результатів на
екран}
End;
Readkey; {Затримка зображення на екрані}
End.
№315 (1). Дано натуральне число n та цілі числа a1, a2, … an і b1, b2, …, bn. Визначити значення c1, c2, …, cn, якщо ci = ai + bi.
Program Example_315_1;
Uses crt;
Const N=100;
Type
Masiv = array[1..N] of integer;
Var A,B,C:Masiv; {A,B - масиви для зберігання
вхідних даних, С - вихідний
масив}
i:byte; {і - змінна циклу}
Begin
Randomize;
Clrscr;
For i:=1 to N do
Begin
A[i]:=random(200); {Заповнення масиву
випадковими цілими числами}
Write(A[i]:4); {Виведення масиву на екран
для контролю правильності
роботи програми}
End;
Writeln;
For i:=1 to N do
Begin
B[i]:=random(200);
Write(B[i]:4);
End;
Writeln;
For i:=1 to N-1 do
Begin
C[i]:=a[i]+b[i];
write(c[i]:4);
End;
Readkey; {Затримка зображення на екрані}
End.
№318 (1). Дано дійсні числа a1, a2, …, a30, b1, b2, …, b30. Обчислити
(a1 + b30)(a2 + b29)…(a30 + b1).
Program Example_318_1;
Uses crt;
Var A,B: array[1..30] of real;
{A,B - масиви для зберігання вхідних даних}
i:byte; {і - змінна циклу}
Rez:real; {Rez - результат обчислень}
Begin
Randomize;
Clrscr;
Writeln ('Масив А:');
For i:=1 to 30 do
Begin
A[i]:=random(200)/7-random*15;
Write(A[i]:8:2);
End;
Writeln ('Масив В:');
For i:=1 to 30 do
Begin
B[i]:=random*200-random*100;
Write(B[i]:8:2);
End;
Writeln;
Rez:=1;
{Початкове значення дорівнює 1, тому що результат
являється накопиченням добутку}
For i:=1 to 30 do
Begin
Rez:=Rez*(A[i]+B[31-i]);
End;
Writeln ('Результат обчислень = ',Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
№318 (4). Дано дійсні числа a1, a2, …, a30, b1, b2, …, b30. Обчислити
Program Example_318_4;
Uses crt;
Var A,B:array[1..30] of real;
{A,B - масиви для зберігання вхідних даних}
i:byte; {і - змінна циклу}
R1,R2:real; {R1 - чисельник дробу, R2 -
знаменник дробу}
Rez:real; {Rez - результат обчислень}
Begin
Randomize;
Clrscr;
Writeln ('Масив А:');
For i:=1 to 30 do
Begin
A[i]:=random(200)/7-random*15;
Write(A[i]:8:2);
End;
Writeln ('Масив В:');
For i:=1 to 30 do
Begin
B[i]:=random*200-random*100;
Write(B[i]:8:2);
End;
Writeln;
R1:=0;
R2:=0;
{Початкове значення дорівнює 0, тому що результат
являється накопиченням суми}
For i:=1 to 15 do
Begin
R1:=R1 + (A[2*i-1]+B[2*i-1]);
R2:=R2 + (A[2*i]+B[2*i]);
End;
Rez:=R1/R2;
Writeln ('Результат обчислень = ',Rez:8:2);
Readkey; {Затримка зображення на екрані}
End.
№343(2). Дано натуральні числа n, m та випадкові дійсні числа, що утворюють таблицю A[i,j], де i = 1,2,…, n; j = 1, 2, …, m. Роздрукувати у рядок елементи, що розташовані в першому стовпчику.
Program Example_343_2;
Uses crt;
Const
n = 10;
m = 8;
Var A: array[1..n,1..m] of real;
i,j: integer; {і,j - змінні циклу}
Begin
Randomize; {Ця процедура запускається з метою
зробити числа генератора
випадкових чисел ще більш
"випадковими"}
Clrscr;
For i:=1 to n do
Begin
For j:=1 to m do
begin
A[i,j]:=random*50-random*30;
{Заповнення масиву
випадковими числами}
Write(A[i,j]:8:2); {Виведення масиву на
екран для контролю
правильності роботи програми}
end;
writeln;
End;
Writeln ('Перший стовпчик масиву:');
For i:=1 to n do
begin
Write (A[i,1]:8:2);
end;
Readkey; {Затримка зображення на екрані}
End.
№343(5). Дано натуральні числа n, m та випадкові дійсні числа, що утворюють таблицю A[i,j], де i = 1,2,…, n; j = 1, 2, …, m. Роздрукувати у рядок елементи, що розташовані на бічній діагоналі.
Program Example_343_5;
Uses crt;
Const
n = 10;
Var A: array[1..n,1..n] of real;
i,j: integer; {і,j - змінні циклу}
Begin
Randomize;
Clrscr;
{Заповнення масиву випадковими числами та виведення
його на екран}
For i:=1 to n do
Begin
For j:=1 to m do
begin
A[i,j]:=random(500)/11-random*30;
Write (A[i,j]:8:2);
end;
writeln;
End;
Readln; {Затримка зображення на екрані}
Writeln ('Бічна діагональ масиву:');
For i:=1 to n do
begin
Write (A[i,n-i+1]:8:2);
end;
Readkey; {Затримка зображення на екрані}
End.
№344(2). Дано натуральні числа n, m та матриці цілих чисел Aij, Bij, де i = 1, 2, …, n, j = 1, 2, …,m. Обчислити значення елементів матриці Cij, якщо Cij = Aij (I+j) - Bij(i2+j2).
Program Example_344_2;
Uses crt;
Const
n = 8;
m = 15;
Var A,B,C: array[1..n,1..m] of integer;
i,j:word; {і,j - змінні циклу}
Begin
Randomize;
Clrscr;
Writeln ('Масив А:');
For i:=1 to n do
Begin
For j:=1 to m do
begin
A[i,j]:=random(50)-random(20);
Write (A[i,j]:5);
end;
writeln;
End;
Writeln ('Масив В:');
For i:=1 to n do
Begin
For j:=1 to m do
begin
B[i,j]:=random(120)-random(80);
Write (B[i,j]:5);
end;
writeln;
End;
Writeln ('Результуючий масив С:');
For i:=1 to n do
Begin
For j:=1 to m do
begin
С[i,j]:=A