Записати у файл cgisla.dat 100 перших цiлих чисел

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