Розв’язок задач на мові програмування Pascal

Розробка програмних засобів в професійному програмуванні. Використання простих і гнучких структур розгалужень, циклів. Фундаментальні ідеї алгоритмів. Стандартні функції і процедури. Алгоритми з розгалуженням. Загальна форма запису циклу з лічильником.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык украинский
Дата добавления 15.12.2012
Размер файла 227,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Var

a,x,n:integer;

f:Boolean;

Begin

clrscr;

Writeln('Yvedit chuslo n =>');

readln(n);

Writeln('Yvedit zufry x =>');

readln(x);

f:=false;

repeat

a:=n mod 10;

n:=n div 10;

writeln(a);

if (a=x) then f:=true;

until n=0;

if f then writeln('Chuslo maj chocha b odny z zufr')

else writeln('Chuslo ne maj zuch zufr');

readln;

End.

2. Визначити скільки разів трапляється у числі його максимальна цифра.

Program zuf_chusli_3;

Uses crt;

Var

a,max,k,n,n1:integer;

Begin

clrscr;

Writeln('Yvedit chuslo n =>');

readln(n);

n1:=n;

a:=n mod b;

max:=a;

repeat

a:=n mod 10;

n:=n div 10;

if a > max then max:=a;

until n=0;

k:=0;

repeat

a:=n1 mod 10;

n1:=n1 div 10;

if a = max then k:=k+1;

until n1=0;

writeln('Maksumalna zufra y chusli - ', max);

writeln('Y chusli vona traplyaetsya ',k,' raz');

readln;

End.

3. Визначити чи є парною різниця максимальної та мінімальної цифр натурального числа.

Program zuf_chusli_4;

Uses crt;

Var

a,max,min,n,n1,r:integer;

Begin

clrscr;

Writeln('Yvedit chuslo n =>');

readln(n);

n1:=n;

a:=n mod 10;

max:=a;

repeat

a:=n mod 10;

n:=n div 10;

if a > max then max:=a;

until n=0;

a:=n1 mod 10;

min:=a;

repeat

a:=n1 mod 10;

n1:=n1 div 10;

if a < min then min:=a;

until n1=0;

r:=max-min;

if (r mod 2) =0 then

writeln('Riznuzya max ta min zufr chusla - parna І dorivnje =>', r)

else

writeln('Riznuzya max ta min zufr chusla - neparna І dorivnje =>', r);

readln;

End.

4. Визначити усі натуральні чотирицифрові числа, записані різними цифрами та різниця максимальної та мінімальної цифр яких є непарною. Визначити кількість таких цифр.

Program zuf_chusli_5;

Uses crt;

Var

a,b,c,d,max,min,k,r :integer;

Begin

k:=0;

For a:=1 to 9 do

For b:=0 to 9 do

If a<>b then

For c:=0 to 9 do

If (a<>c)and(b<>c) then

For d:=0 to 9 do

begin

If (a<>d)and(b<>d)and(c<>d) then

begin

if (a>b)and(a>c)and(a>d) then max:=a;

if (b>a)and(b>c)and(b>d) then max:=b;

if (c>a)and(c>b)and(c>d) then max:=c;

if (d>a)and(d>b)and(d>c) then max:=d;

if (a<b)and(a<c)and(a<d) then min:=a;

if (b<a)and(b<c)and(b<d) then min:=b;

if (c<a)and(c<b)and(c<d) then min:=c;

if (d<a)and(d<b)and(d<c) then min:=d;

r:=max-min;

if (r mod 2)<>0 then

begin

WriteLn( a,b,c,d );

k:=k+1;

end;

end;

end;

WriteLn( 'k=',k );

End.

Задача 15

Необхідно визначити чи є введене натуральне число х числом Армстронга.

Program chuslo_Amstronga;

Uses crt;

Var

a,s,x,n:integer;

Begin

clrscr;

Write('Yvedit chuslo x =>');

readln(x);

s:=0;

n:=x;

repeat

a:=n mod 10;

n:=n div 10;

s:=s+a*sqr(a);

until n=0;

if s = x then writeln('Yvedene chuslo - chuslo Armstronga')

else writeln('No, yvedene chuslo - ne chuslo Armstronga');

readln;

End.

Задача 16

Необхідно визначити та вивести на екран усі трицифрові та чотирицифрові числа, які являються числами Армстронга.

Program chuslo_Amstronga;

Uses crt;

Var

a,s,n,І,k:integer;

Begin

clrscr;

k:=0;

for і:=100 to 9999 do

begin

s:=0;

n:=І;

repeat

a:=n mod 10;

n:=n div 10;

s:=s+a*sqr(a);

until n=0;

if s = і then

begin

writeln(і);

k:=k+1;

end;

end;

writeln('k=',k);

readln;

End.

Задача 17

Сума цифр чотирицифрового числа дорівнює 30, у запису числа використовано лише дві різні цифри, це число ділиться на 2, на 7 і на 11. Визначити це число.

Program nomer_avto;

Uses crt;

Var

a,s,n,і,k:integer;

Begin

clrscr;

for і:=1000 to 9999 do

begin

s:=0;

n:=і;

repeat

a:=n mod 10;

n:=n div 10;

s:=s+a;

until n=0;

if (s = 30)and ((І mod 2)=0) and ((І mod 7)=0) and ((І mod 11)=0) then

writeln(і);

end;

readln;

End.

Завдання для самостійної роботи

1. Вивести всі парні числа починаючи від числа N і до числа M. Числа N та M задає користувач.

2. Скласти програму, яка перевіряє, чи є послідовність із 10 цілих чисел, що вводяться з клавіатури, зростаючою.

3. Спортсмен в перший день пробіг 10 км. Кожен наступний день він збільшував норму на 10% від норми попереднього дня.

а) Визначити через скільки днів спортсмен пробіжить сумарний шлях понад 100 км.

б) Визначити через скільки днів спортсмен буде пробігати більше 20 км.

в) Який шлях пробіжить спортсмен на 7-й день.

4. Вводяться 14 чисел. Визначити, скільки серед них додатних (включаючи 0) і скільки від'ємних. (Числа вводяться в одну змінну в циклі).

5. Запросіть у користувача 16 чисел і виведіть на екран для кожного, чи ділиться воно без остачі на 11. Запросіть у користувача, скільки потрібно проаналізувати чисел, а потім запросіть ці числа і зробіть для кожного висновок, чи є воно парним або від'ємним.

6. Вивести всі квадрати натуральних чисел, не більших даного числа N.

7. Знайти суму і кількість елементів послідовності, які по модулю більше 0.001. послідовність:

S = 1 / 2 - 2 / 4 + 3 / 8 - 4 / 16 + ... - ...

8. Обчислити суму ряду чисел 1 / 12 + 1 / 22 + 1 / 32 + ... + 1/n2, де n визначається користувачем.

9. Складіть програму для визначення N!-M! N! = 1 * 2 * 3 * 4 *.........* n.

10. Запитати ім'я користувача та надрукувати "Привіт, Вася!" 10 разів. (якщо Вася - ім'я користувача).

11. Програма повинна обчислювати добуток двох чисел і питати завершувати програму чи ні, якщо ні то продовжувати запитувати дані обчислювати добуток і друкувати його.

12. Вивести на друк всі тризначні натуральні числа, сума цифр яких дорівнює заданому числу N. (Операції div і mod не використовувати.)

13. Знайдіть всі натуральні числа від 1 до 1000, кратні 3.

14. Скласти програму планування закупівлі товару в магазині на суму, що не перевищує задану величину.

15. Скласти програму запиту пароля поки не буде введений пароль вірно. У програмі передбачити лічильник неправильних введень пароля.

16. Добуток N перше непарних чисел дорівнює р. Скільки співмножників взято?

17. Знайдіть кількість точок з цілочисельними координатами, які потрапляють в коло радіуса R.

18. Скласти програму, яка роздруковує на екрані таблицю множення.

19. Знайдіть всі тризначні числа, які дорівнюють сумі кубів своїх цифр. Врахуйте, що abc = 100a +10 b + c.

20. Скласти програму виведення всіх тризначних чисел, сума цифр яких дорівнює даним цілого числа. Програма повинна друкувати саме числа, а не набір цифр.

21. Імітувати на екрані роботу електронних годинників.

22. Задано n трійок чисел a, b, c. Визначити, скільки із запропонованих трійок можна використовувати для побудови трикутника, якщо a, b, c - довжини його сторін.

(Відомо, що a ? b ? c)

23. Вкажіть всі цілі числа, які збільшаться на 20%, якщо їхні цифри записати у зворотньому порядку.

24. Скласти програму, в якій серед двозначних чисел друкуються ті числа, які дорівнюють сумі своїх цифр.

4. Процедури і функції

Підпрограма - це окрема функціонально незалежна частина програми. Будь-яка підпрограма має ту ж структурою, яку має і вся програма.

Підпрограми вирішують три важливі завдання:

* позбавляють від необхідності багаторазово повторювати в тексті програми аналогічні фрагменти;

* покращують структуру програми, полегшуючи її розуміння;

* підвищують стійкість до помилок у програмуванні і непередбачених наслідків при модифікаціях програми.

Підпрограми можуть бути стандартними, тобто визначеними системою, і власними, тобто визначеними програмістом.

Стандартна підпрограма (процедура або функція) - підпрограма, включена до бібліотеки програм ЕОМ, доступ до якої забезпечується засобами мови програмування. Викликається вона на ім'я із заданням фактичних параметрів з типом описаним при описі даної процедури в бібліотеці процедур і функцій.

Структура тексту підпрограми відповідає структурі тексту основної програми за двома винятками:

* підпрограма починається з заголовка, що містить ім'я підпрограми, що передаються до неї і які повертаються від неї пераметри, запис заголовка підпрограми відрізняється від заголовка програми;

* підпрограма закінчується не крапкою, а крапкою з комою.

Виклик підпрограми відбувається при кожному вживанні її імені в основній програмі. При виклику підпрограми виконання основної програми припиняється, і управління передається в підпрограму, де виконуються команди, задані в ній. Підпрограма завершується, якщо виконані всі її процедури до завершального слова End або за спеціальною команді виходу з підпрограми Exit. Після закінчення роботи підпрограми управління повертається основній програмі, інакше кажучи, до першої команди, наступної за зверненням до цієї підпрограми.

У мові Pascal визначаються два типи підпрограм - процедури та функції. Основна відмінність між процедурою і функцією полягає в тому, що процедура тільки виконує якусь закінчену послідовність дій, не повертаючи результату роботи в основну програму, а функція і виконує дії, і повертає результат.

Будь-яка підпрограма повинна бути описана до того, як вона буде викликана в програмі або в іншій підпрограмі. Всі змінні, які використовує підпрограма, можуть бути або глобальні або локальні.

Глобальними називаються змінні, оголошені в основній програмі і доступні як програмі, так і всім її підпрограмам.

Локальними називаються змінні, оголошені усередині підпрограми і доступні тільки їй самій.

Обмін інформацією між основною програмою і підпрограмою може здійснюватися тільки за допомогою глобальних змінних.

Якщо змінна описана в основній програмі і не перевизначена в підпрограмі, вона може використовуватися в підпрограмі. Пам'ять для локальних (тобто описаних в підпрограмі) змінних виділяється на час виконання даної підпрограми в спеціальній області, яка називається стеком. При завершенні роботи підпрограми пам'ять звільняється, тому всі внутрішні результати роботи підпрограми не зберігаються від одного звернення до іншого.

Процедури і функції оголошуються в розділі опису програми слідом за розділом змінних.

Загальна структура програми виглядає так:

Рrogram hh;

Label; {описание меток}

Const; {описание констант}

Type; {описание типов}

Var; {описание переменных}

Procedure; {описание процедур}

Function; {описание функций}

Begin

. . .

. . .

End.

Формальні параметри підпрограми вказують, з якими параметрами слід звертатися до цієї програми. Вони задаються в заголовку підпрограми у вигляді списку параметрів.

Усі формальні параметри можна розбити на чотири категорії:

* параметри значення (ці параметри в основній програмі підпрограмою не змінюються);

* параметри - змінні (ці параметри підпрограма може змінити в основній програмі);

* параметри-константи;

* параметри-процедури і параметри-функції.

Для кожного формального параметра слід вказати ім'я і тип, а в разі параметра-змінної або параметра-константи - його категорію.

Тип формального параметра може бути будь-яким, проте в заголовку підпрограми не можна вводити новий тип.

Наприклад, не можна писати

function Max (A: array [1 .. 100] of real): real;

Щоб правильно записати цей заголовок, слід в основній програмі ввести тип-масив, а потім використовувати його в заголовку підпрограми:

type tArr = array [1 .. 100] of real;

function Max (A: tArr): real;

При зверненні до підпрограми формальні параметри замінюють на відповідні фактичні, які викликає програма або підпрограма.

Список параметрів, що задається в заголовку процедури і функції, забезпечує зв'язок підпрограми із основною програмою. Через нього в підпрограму передаються вихідні дані і повертається результат. При цьому передбачено два принципово різні механізми передачі параметрів - за значенням і за посиланням. Синтаксично ці два способи відрізняються вживанням слова Var перед відповідною змінної в заголовку підпрограми. Якщо це слово є, то змінна передається по посиланню, а якщо ні - за значенням.

При виклику за значенням у підпрограмі створюються змінні відповідно з оголошеними в заголовку підпрограми. Ці змінні існують тільки на час виконання підпрограми. У зосновній програмі в якості аргументу підпрограми може використовуватися не тільки змінна, а й вираз. На початку виконання підпрограми значення цієї змінної або виразу присвоюються внутрішній тимчасовій змінні підпрограми. Коли підпрограма завершується, використовувані підпрограмою змінні не зберігають свого значення, тому передачу даних за значенням можна використовувати тільки для передачі даних в підпрограму, але не для отримання від неї результатів.

При виклику за посиланням у підпрограмі пам'ять під змінні не відводиться. Основна програма передає в підпрограму не значення змінної, а посилання на місце в пам'яті основної програми, де розташована деяка змінна. Підпрограма, виконуючи деякі дії з цієї змінної виконує дії зі змінною основної програми, тому після виконання процедури зміни, вчинені зі змінними основної програми, зберігаються. Цей механізм використовується для отримання від підпрограми результатів її виконання.

Параметр-значення вказуються в заголовку підпрограми своїм ім'ям і через двокрапку - типом. Тип параметра-значення може бути будь-яким за винятком файлового.

Якщо параметрів - значення одного типу декілька, їх можна об'єднати в одну групу, перерахувавши їх імена через кому, а потім вже вказати загальний тип. Окремі групи параметрів відокремлюються один від одного крапкою з комою

В якості фактичного параметра на місці параметра-значення при виклику підпрограми може бути будь-який вираз сумісний для даного типу, що не містить файлову компоненту.

Локальні змінні можуть бути описані як в заголовку програми, так і в розділі опису змінних. При збігу імен глобальних і локальних змінних, локальні в межах своєї дії відміняють дії глобальних, і ці змінні ніяк не пов'язані між собою.

Процедура повинна бути, по можливості, незалежна від основної програми, тому всі змінні, потрібні тільки в межах процедури, повинні описуватися як локальні.

Структура процедури має наступний вигляд:

Procedure <ім'я процедури>(формальні параметри : їх тип);

Var (локальні змінні)

Begin

. . .

end;

Кожен формальний параметр вказується разом зі своїм типом. Відповідний йому фактичний параметр вказується без типу. Між формальними і фактичними параметрами повинна бути відповідність по кількості параметрів, за їх типу і порядку слідування.

Підпрограма-функція - оформляється аналогічно процедурі. Відмінні особливості функції:

вона має тільки один результат виконання;

результат позначається іменем функції і передається в основну програму.

Функція оформляється в наступному вигляді:

Function <ім'я функції>(формальні параметри: тип): тип значення функції;

Var

. . .

Begin

. . .

End ;

Викликається функція по її імені із зазначенням фактичних параметрів.

Виклик функції можна робити безпосередньо всередині виразу. При виклику функції тип не вказується.

У тілі функції обов'язково повинен бути хоча б один оператор присвоювання, де в лівій частині стоїть ім'я функції, а в правій - її значення. Інакше, значення не буде визначено.

Якщо ім'я процедури використовується тільки для її виклику, то з ім'ям функції зв'язується її значення.

Практична робота №5

Program Trukytnuk;

Uses CRT;

Var

pt,s,t,d:integer;

S_max,S_tr:real;

n_Var,і:integer;

Function ploscha(x,y,z:integer):real;

Var

p,S:real;

begin

if(x+y>z)and(y+z>x)and(x+z>y) then

begin

p:=(x+y+z)/2;

S:=sqrt(p*(p-x)*(p-y)*(p-z));

end

else S:=0;

ploscha:=s;

end;

Procedure max;

begin

if S_tr>S_max then

begin

S_max:=S_tr;

n_Var:=і;

end;

end;

Begin

clrscr;

write('pt=');

readln(pt);

write('s=');

readln(s);

write('t=');

readln(t);

write('d=');

readln(d);

s_max:=0;

і:=1;

S_tr:=ploscha(pt,s,t);

max;

і:=2;

S_tr:=ploscha(pt,s,d);

max;

і:=3;

S_tr:=ploscha(pt,t,d);

max;

і:=4;

S_tr:=ploscha(s,t,d);

max;

Writeln('Max_S_tr=',S_max:4:2);

writeln('Variant nomer ',n_Var);

readln;

End.

Задача 1

Знайти площу п'ятикутника, у якого сторони дорівнють:

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

AB = 2м, BC =a м, CD = b м, DE = c м, AE = d м, AC =4 м, AD = 5 м.

Program Pyatukytnuk;

Uses Crt;

Label vvod;

Var

a,b,c,d,f,g,h: integer;

S,S1,S2,S3 : real;

Function ploscha(x,y,z:integer):real;

Var

p,S:real;

begin

If (x+y>z) and (x+z>y) and (y+z>x) Then

begin

P:=(x+y+z)/2;

S:=sqrt(p*(p-x)*(p-y)*(p-z));

end

Else

begin

Writeln(`Такий трикутник не існує');

S:=0

end;

ploscha:=S

End;

Begin;

ClrScr;

vvod: Write (`Введіть сторону=BC> `);

ReadLn(a);

Write (`Введіть сторону=CD> `);

ReadLn(b);

Write (`Введіть сторону=DE> `);

ReadLn(c);

Write (`Введіть сторону=AE> `);

ReadLn(d);

f:=2;

g:=4;

h:=5;

S1:=ploscha(f,a,g);

S2:=ploscha(g,b,h);

S3:=ploscha(h,c,d);

if (S1<>0) and (S2<>0) and (S3<>0) then

begin

S:=S1+S2+S3;

Writeln(`S=',s:5:2)

end

else

begin

Writeln(`Пятикутника не існує');

Writeln(`уведіть іншу величину сторін)';

Goto vvod;

end;

ReadLn;

End.

Задача 2

Знайти площу та довжину лінії «вісімки», утвореної двома дотичними колами радіусів R1 і R2.

Program Visimka;

Uses Crt;

Var

R1,R2: integer;

S,S1,S2,L,L1,L2: real;

Procedure ploscha(r:integer; Var s,l:real);

begin

S:=pi*sqr®;

L:=2*pi*r;

end;

Begin;

ClrScr;

Write (`Введіть радіус R1=> `);

ReadLn(R1);

Write (`Введіть радіус R2>= `);

ReadLn(R2);

ploscha(R1,S1,L1);

ploscha(R2,S2,L2);

S:=S1+S2;

L:=L1+L2;

Writeln(`S=',s:4:2);

Writeln(`L=',l:4:2);

ReadLn;

End.

Задача 3

Написати процедури, що перевіряють ознаки подільності цілого числа n на 2, 3, 4, 5, 8, 9, 11. Використовуючи ці процедури розробити програму, що перевіряє, на які з цих чисел ділиться число n.

Program Dilumist;

Uses Crt;

Var

n:longint;

Procedure dil_2(n:longint);

begin

If (n mod 2)=0 then

Writeln(n,' ділиться на 2')

end;

Procedure dil_3(n:longint);

Var

a,b,c,d,e,f,g,h,k,s:integer;

begin

a:=n div 100000000;

b:=(n mod 100000000) div 10000000;

c:=(n mod 10000000) div 1000000;

d:=(n mod 1000000) div 100000;

e:=(n mod 100000) div 10000;

f:=(n mod 10000) div 1000;

g:=(n mod 1000) div 100;

h:=(n mod 100) div 10;

k:= n mod 10;

s:=a+b+c+d+e+f+g+h+k;

if (s mod 3)=0 then Writeln(n,' ділиться на 3');

end;

Procedure dil_4(n:longint);

Var

a:longint;

begin

a:=n mod 100;

If (a mod 4)=0 then

Writeln(n,' ділиться на 4')

end;

Procedure dil_5(n:longint);

Var

a:longint;

begin

a:=n mod 10;

If (a = 0)or (a = 5) then

Writeln(n,' ділиться на 5')

end;

Procedure dil_8(n:longint);

Var

a:longint;

begin

a:= n mod 1000

If (a mod 8)=0 then

Writeln(n,' ділиться на 8')

end;

Procedure dil_9(n:longint);

Var

a,b,c,d,e,f,g,h,k,;s:integer;

begin

a:=n div 100000000;

b:=(n mod 100000000) div 10000000;

c:=(n mod 10000000) div 1000000;

d:=(n mod 1000000) div 100000;

e:=(n mod 100000) div 10000;

f:=(n mod 10000) div 1000;

g:=(n mod 1000) div 100;

h:=(n mod 100) div 10;

k:= n mod 10;

s:=a+b+c+d+e+f+g+h+k;

if (s mod 9)=0 then Writeln(n,' ділиться на 9')

end;

Procedure dil_11(n:longint);

Var

a,b,c,d,e,s1,s2,r:integer;

begin

a:=n div 100000000;

b:=(n mod 100000000) div 10000000;

c:=(n mod 10000000) div 1000000;

d:=(n mod 1000000) div 100000;

e:=(n mod 100000) div 10000;

f:=(n mod 10000) div 1000;

g:=(n mod 1000) div 100;

h:=(n mod 100) div 10;

k:= n mod 10;

s1:=a+c+e+g+k;

s2:=b+d+f+h;

r:=s2-s1;

If (r mod 11)=0 then Writeln(n,' ділиться на 11')

end;

Begin;

ClrScr;

Write (`Введіть радіус n=> `);

ReadLn(n);

dil_2(n);

dil_3(n);

dil_4(n);

dil_5(n);

dil_8(n);

dil_9(n);

dil_11(n);

ReadLn;

End.

Задача 4

Знайти всі прості числа з проміжку від 1 до n.

Program prosti_chusla;

Uses Crt;

Var

x,n,І,j : integer;

F: Boolean;

Procedure proste(x,і,j:integer;Var f:boolean);

begin

while(і<=x) and (not f) do

begin

if (j mod і)=0 then f:=true;

і:=і+1

end;

end;

Begin

ClrScr;

Write (`Введіть n=>`);

ReadLn(n);

For j:=2 to n do

Begin

x:=trunc(sqrt(j));

f:=false;

і:=2;

proste(x,І,j,f);

if not f then writeln(j)

end;

ReadLn;

End.

Задача 5

З'ясувати, чи трицифрові числа є паліндромами.

Program chuslo;

Uses Crt;

Var

x, y, а1,b1,c1,a2,b2,c2 : integer;

Procedure zufru_chucla(n:integer;Var a,b,c: integer);

begin

a:=n div 100;

b:=(n mod 100) div 10;

c:=(n mod 10);

end;

Begin

ClrScr;

Write (`Введіть перше число=>`);

ReadLn(x);

Write (`Введіть друге число=>`);

ReadLn(y);

zufru_chucla(x,a1,b1,c1);

zufru_chucla(y,a2,b2,c2);

if (a1=c2) and (b1=b2) and (c1=a2) then Writeln (`yes - Числа є палідромами' )

Else Writeln (`No - Числа не є палідромами');

ReadLn;

End.

Задача 6. Визначте значення z=(sign(x)+sign(y)*sign(x+y), де

-1, якщо a<0;

Sign(a)= o, якщо a=0;

1, якщо a>0.

Program signum;

Uses crt;

Var

x,y,k:real;

a,b,c,z:integer;

Procedure sign(a:real;Var z: integer);

begin

If a<0 then z:=-1;

If a=0 then z:=0;

If a>0 then z:=1

end;

Begin

clrscr;

write('x=>');

readln(x);

write('y=>');

readln(y);

sign(x,a);

sign(y,b);

k:=x+y;

sign(k,c);

z:=(a+b)*c;

writeln('z=',z);

readln;

End.

Задача 7

За допомогою функції, що визначає, яке з двох чисел більше, визначити яке з чотирьох чисел більше.

Program max_4chucla;

Uses crt;

Var

a,b,c,d,max:real;

Function maximym(a,b,max:real):real;

begin

Max:=a;

If max<b then max:=b;

Maximym:=max;

end;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('c=>');

readln(c);

write('d=>');

readln(d);

max:=maximym(maximym(maximym(a,b,max),c,max),d,max);

writeln('max=',max:4:2);

readln;

End.

Задача 8

Двоцифрове число у сумі з числом, записаним тими самими цифрами, але в оберненому порядку, дорівнює квадрату натурального числа. Програма повинна визначати всі такі двоцифрові числа.

Program polindrom;

Uses crt;

Var

s,n1,і:integer;

N,a:real;

Procedure polindrom(n:integer; Var n1:integer);

Var

a,b:integer;

begin

a:=n div 10;

b:=n mod 10;

n1:=b*10+a;

end;

Begin

Clrscr;

For і:=11 to 99 do

begin

Polindrom(і,n1);

S:=і+n1;

N:=sqrt(s);

A:=frac(n);

If a=0 then

writeln(і);

end;

readln;

End.

Задача 9

Знайти всі досконалі числа в заданому проміжку.

Program doskonali;

Uses crt;

Var

n,n1,і:integer;

Procedure dos(n,n1:integer);

Var

і,j,s:integer;

begin

for і:=n to n1 do

begin

s:=0;

for j:=1 to і-1 do

begin

if (і mod j)=0 then s:=s+j;

end;

if s=j then writeln(і);

end;

end;

Begin

clrscr;

write('n=>');

readln(n);

write('n1=>');

readln(n1);

dos(n,n1,і);

readln;

End.

Задача 10

Дано парне число n>2. Представити його у вигляді суми двох простих чисел, використовуючи процедуру, що перевіряє, чи є деяке натуральне число простим.

Program gip_Goldbacha;

Uses crt;

label 1;

Var

x,n,n1,n2,і : integer;

F: Boolean;

Procedure proste(x,і,n:integer;Var f:boolean);

begin

while(і<=x) and (not f) do

begin

if (n mod і)=0 then f:=true;

і:=і+1

end;

end;

Begin

ClrScr;

Write (`Введіть n=>`);

ReadLn(n);

1: Write (`Введіть n1<n=>`);

ReadLn(n1);

x:=trunc(sqrt(n1));

f:=false;

і:=2;

proste(x,І,n1,f);

if f then goto 1;

n2:=n-n1;

x:=trunc(sqrt(n2));

f:=false;

i:=2;

proste(x,І,n2,f);

if not f then writeln(`Gipoteza Goldbacha virna');

ReadLn;

End.

Задача 11

Визначити найбільший спільний дільник n натуральних чисел.

Program nsd;

Uses CRT;

Var

a,b,c,d,e,f,sd:integer;

Function dil(a,b:integer):integer;;

begin

while a <> b do

begin

if a>b then a:=a-b

else b:=b-a

end;

dil:=a;

end;

Begin

clrscr;

write('a=>');

readln(a);

write('b=>');

readln(b);

write('c=>');

readln(c);

write('d=>');

readln(d);

write('e=>');

readln(e);

write('f=>');

readln(f);

sd:=dil(dil(dil(dil(dil(a,b),c),d),e),f);

writeln('nsd =>',sd)

readln;

End.

Задача 12

Визначте суму та добуток двох дробів a/b та c/d , чисельник та знаменник яких є натуральними числами. Результат подати у вигляді нескоротного дробу.

Program Sum_Dob;

Uses CRT;

Var

a1,b1,a2,b2,ch_sum, zn_sum, ch_dob, zn_dob:integer;

Procedure vvod;

begin

write('a1=>');

readln(a1);

write('b1=>');

readln(b1);

write('a2=>');

readln(a2);

write('b2=>');

readln(b2);

end;

Procedure Sum;

begin

ch_sum:=a1*b2+a2*b1;

zn_sum:=b1*b2;

end;

Procedure Dob;

begin

ch_dob:=a1*a2;

zn_dob:=b1*b2;

end;

Function nsd(a,b:integer):integer;

begin

while abs(a) <> abs(b) do

begin

if abs(a)>abs(b) then abs(a):=abs(a)-abs(b)

else abs(b):=abs(b)-abs(a)

end;

nsd:=a;

end;

Procedure Skor(Var a,b:integer);

Var

z:integer;

begin

z:=nsd(a,b);

a:=a div z;

b:=b div z;

end;

Procedure vuvod(Var a,b:integer);

begin

writeln('ch=>',a);

writeln('zn=>',b);

end;

Begin

clrscr;

vvod;

sum;

if ch_sum<>0 then

skor(ch_sum,zn_sum);

vuvod(ch_sum,zn_sum);

dob;

skor(ch_sum,zn_sum);

vuvod(ch_sum,zn_sum);

readln;

End.

Задача 13

Дано натуральне число n . Визначити, чи є серед чисел n, n+1, …,2n числа-близнюки, тобто прості числа, різниця між якими дорівнює 2.

Program chusla_bluznuku;

Uses Crt;

Var

x,n,n1,n2,n3,n4,і,j : integer;

F: Boolean;

Procedure proste(x,і,j:integer;Var f:boolean);

begin

while(і<=x) and (not f) do

begin

if (j mod і)=0 then f:=true;

і:=і+1

end;

end;

Begin

ClrScr;

Write (`Введіть n=>`);

ReadLn(n);

N1:=2*n;

j:=n;

while j<=n1 do

begin

x:=trunc(sqrt(j));

f:=false;

і:=2;

proste(x,і,j,f);

if not f then

begin

n2:=j;

j:=j+2;

if j<=n1 then

begin

x:=trunc(sqrt(j));

f:=false;

і:=2;

proste(x,І,j,f);

if not f then

begin

n3:=j;

writeln(`Chucla-blusnuku: `,n2,' `,n3);

end;

end;

end;

j:=j+1;

end;

ReadLn;

End.

Задача 14

Визначити та вивести на екран усі прості числа в проміжку від 1000 до 9999, в яких сума першої та другої цифри дорівнює сумі третьої та четвертої.

Program prosti_chusla;

Uses Crt;

Var

x,n,n1,І,j,a,b,c,d : integer;

F: Boolean;

Procedure proste(x,і,j:integer;Var f:boolean);

begin

while(і<=x) and (not f) do

begin

if (j mod і)=0 then f:=true;

і:=і+1

end;

end;

Begin

ClrScr;

Write (`Введіть n=>`);

ReadLn(n);

Write (`Введіть n1=>`);

ReadLn(n1);

For j:=n to n1 do

begin

x:=trunc(sqrt(j));

f:=false;

і:=2;

proste(x,І,j,f);

if not f then

begin

a:=j div 1000;

b:=(j mod 1000) div 100;

c:=(j mod 100) div 10;

d:=j mod 10;

if (a+b)=(c+d) then writeln(j)

end;

end;

ReadLn;

End.

Задача 15

Координати клітин на шаховій дошці визначає пара натуральних чисел, кожне з яких не більше 8; перше число - номер вертикалі, друге номер горизонталі. Розробити процедури або функції, які б визначали:

1) Чи є клітини шахового поля з координатами (х,у) та (а,с) полями одного кольору?

2) Н клітинці (х,у) перебуває ферзь. Чи загрожує він фігурі, яка перебуває на клітинці з координатами (а,с)?

3) На клітинці шахового поля з координатами (х,у) розташований кінь. Чи загрожує він фігурі, яка перебуває на клітинці з координатами (а,с)?

4) Чи можна з клітинки шагового поля з координатами (х,у) одним ходом потрапити на клітинку (а,с)? Розгляньте варіанти, коли хід робить: тура, ферзь, кінь. Виведіть повідомлення про те, до якої клітинки потрапляє фігура за один хід. Якщо за один хід такий перехід неможливий, то чи можна досягти цього за два ходи кожної фігури?

Program shaxmatu;

Uses CRT;

Var

x,y,a,c: integer;

f1,f2,f3,f4,f5: Boolean;

Procedure Colir;

begin

If (((x mod 2 =0)and(y mod 2=0)or(x mod 2 <>0)and(y mod 2<>0))and

((a mod 2 =0)and(c mod 2=0)or(a mod 2 <>0)and(c mod 2<>0)))or

(((x mod 2 =0)and(y mod 2<>0)or(x mod 2 <>0)and(y mod 2=0))and

((a mod 2 =0)and(c mod 2<>0)or(a mod 2 <>0)and(c mod 2=0))) Then

Writeln('(',x,',',y,') і (',a,',',c,') - zi polya odnogo kolory')

Else

Writeln('(',x,',',y,') і (',a,',',c,') - zi polya riznogo kolory')

end;

Procedure ferz;

begin

If (a=x)or(c=y)or((a=x+1)and(c=y-1))or((a=x+2)and(c=y-2))or

((a=x+3)and(c=y-3))or((a=x+4)and(c=y-4))or((a=x+5)and

(c=y-5))or((a=x+6)and(c=y-6))or((a=x+7)and(c=y-7))or

((a=x-1)and(c=y+1))or((a=x-2)and(c=y+2))or((a=x-3)and(c=y+3))or

((a=x-4)and(c=y+4))or((a=x-5)and(c=y+5))or((a=x-6)and(c=y+6))or

((a=x-7)and(c=y+7))or((a=x-1)and(c=y-1))or((a=x-2)and(c=y-2))or

((a=x-3)and(c=y-3))or((a=x-4)and(c=y-4))or((a=x-5)and(c=y-5))or

((a=x-6)and(c=y-6))or((a=x-7)and(c=y-7))or((a=x+1)and(c=y+1))or

((a=x+2)and(c=y+2))or((a=x+3)and(c=y+3))or((a=x+4)and(c=y+4))or

((a=x+5)and(c=y+5))or((a=x+6)and(c=y+6))or((a=x+7)and(c=y+7)) Then

begin

Writeln('Ferz na klitunzi (',x,',',y,') zagroghye figyri na

klitunzi (',a,',',c,')');

f3:=true;

end

else

begin

Writeln('Ferz na klitunzi (',x,',',y,') ne zagroghye figyri na

klitunzi (',a,',',c,')');

f3:=false

end;

end;

Procedure tyra;

begin

f2:=false;

If (a=x)or(c=y) Then

begin

Writeln('Tyra na klitunzi (',x,',',y,') zagroghye figyri na

klitunzi (',a,',',c,')');

f2:=true;

end

else

begin

Writeln('Tyra na klitunzi (',x,',',y,') ne zagroghye figyri na

klitunzi (',a,',',c,')');

f2:=false

end;

end;

Procedure kin;

begin

f1 := false;

If ((a=x+2)and(c=y-1))or((a=x-2)and(c=y-1))or

((a=x-1)and(c=y-2))or((a=x+1)and(c=y-2))or

((a=x+2)and(c=y+1))or((a=x-2)and(c=y+1))or

((a=x+1)and(c=y+2))or((a=x-1)and(c=y+2)) Then

begin

Writeln('Kin na klitunzi (',x,',',y,') zagroghye figyri na

klitunzi (',a,',',c,')');

f1:=true;

end

else

begin

Writeln('Kin na klitunzi (',x,',',y,') ne zagroghye figyri na

klitunzi (',a,',',c,')');

f1:=false;

end;

end;

Begin

ClrScr;

Write ('vvedit x=>');

ReadLn(x);

Write ('vvedit y=>');

ReadLn(y);

Write ('vvedit a=>');

ReadLn(a);

Write ('vvedit c=>');

ReadLn(c);

Colir;

Ferz;

Kin;

Tyra;

if f1=true then

writeln('Iz klitunu (',x,',',y,') na klituny (',a,',',c,') moghe

potraputu za odun xid kin')

else

writeln('Iz klitunu (',x,',',y,') na klituny (',a,',',c,') ne moghe

potraputu za odun xid kin');

if f2=true then

writeln('Iz klitunu (',x,',',y,') na klituny (',a,',',c,') moghe

potraputu za odun xid tyra')

else

writeln('Iz klitunu (',x,',',y,') na klituny (',a,',',c,') tyra

potraput za dva xoda');

if f3=true then

writeln('Iz klitunu (',x,',',y,') na klituny (',a,',',c,') moghe

potraputu za odun xid ferz')

else writeln('Iz klitunu (',x,',',y,') na klituny (',a,',',c,') ferz

potraput za dva xoda');

ReadLn;

End.

Задача 16

Визначити суму цифр довільного натурального числа, тоді суму цифр отриманого числа і так продовжувати, поки не одержимо одноцифрове число. Отримане таким чином число називається числовим коренем.

Program chuslovu_korin;

Uses CRT;

Var

a,b,r:integer;

Procedure suma(n:integer; Var s:integer);

Var

k,l,і,n1,n2:integer;

begin

k:=1;

n1:=n;

l:=0;

While n>10 do

begin

N:=n div 10;

K:=k*10;

l:=l+1;

end;

s:=0;

For і:=1 to l+1 do

begin

n2:=n1 div k;

n1:=n1 mod k;

s:=S+n2;

k:=k div 10;

end;

end;

Begin

clrscr;

write('n=>');

readln(n);

suma(n,s);

Repeat

writeln('s=>',s);

suma(s,s1);

until s1<10;

writeln('s1=>',s1);

readln;

End.

Завдання для самостійної роботи

1. Знайти числа з проміжку від А до В, у яких найбільше дільників.

2. Знайти суму всіх дільників числа.

3. Знайти суму площ трикутників ABC і МНР, заданих координатами вершин.

Дані для вводу: А (0; 1), В (3; 1), С (4, 2), М (6, 7), Н (4, 3), Р (3; 8).

4. Знайти суму периметрів трикутників ABC і МНР, заданих координатами вершин. Дані для вводу: А (0; 1), В (3; 1), С (4, 2), М (6, 7), Н (4, 3), Р (3; 8).

5. Обчислити 1! +2! +3 !+......+ N! . Обчислення факторіала організувати як функцію fact (Var r: integer): longint.

6. Визначити довжину кола С і площа круга S, відстань L центру кола від початку координат О. Координати центру кола рівні X і Y, радіус R. Обчислення С, S, L оформити у вигляді процедури.

7. Складіть функцію для визначення значень n!, m!, (nm)!

8. Напишіть функцію CUBЕ, яка повертає куб її числового параметра.

9. З клавіатури вводяться числа, до тих пір, поки не буде введено перше від'ємне число. Визначте, скільки чисел із вхідного потоку, дорівнює сумі кубів своїх цифр. При вирішенні задачі використовуйте функцію, яка буде перевіряти, чи дорівнює натуральне число сумі кубів своїх цифр.

10. Напишіть функцію логічного типу, яка перевіряє, чи є всі цифри, що входять в натуральну запис, числа N різними.

11. Складіть програму підрахунку кількості всіх натуральних чисел, менших М і які діляться на кожну зі своїх цифр.

12. Складіть програму знаходження найменшого натурального N-значного числа Х (X> = 10), рівного потроєному добутку своїх цифр.

13. Дано натуральне число. Визначте, скільки парних цифр використовується в запису цього числа.

14. Складіть програму підрахунку кількості всіх натуральних чисел, менших М, квадрат суми цифр яких дорівнює Х.

15. Від користувачу необхідно ввести два числа. Ці значення повинні бути присвоєні двом змінним, причому значення першої повинно бути менше другої. Звичайно, можна попередити про це користувача, але можливо йому зручніше буде і не знати про вимоги програми. У коді програми можна реалізувати процедуру, яка виробляє обмін значень двох змінних, і викликати її після кожного чергового введення користувача.

16. Розташувати в порядку неспадання три цілих числа.

17. Визначте члени послідовність Фібоначчі.

18. Записати власну функцію обчислення модуля числа n modul(n) ф використати її для обчислення середнього арифметичного модулів трьох довільних чисел.

19. Написати процедуру, яка під час натискання клавіші пробіл видає інформацію про розробника програми.

20. Дано дійсні числа a,b,c,d. Визначити значення:

де

21. Дано дві пари дійсних чисел (x1:y1) та (x2;y2), які є координатами відповідно лівого верхнього і правого нижнього кутів прямокутника, сторони якого паралельні осям координат. Створити програму, що визначатиме довжини сторін цього прямокутника.

22. Створити підпрограму, яка б за заданою стороною квадрата а визначала периметр квадрата і його діагональ. У програмі організувати виклик цієї підпрограми.

23. Створити підпрограму, яка б за даними дійсними координатами двох точок (x1:y1) та (x2;y2) визначаладовжину відповідного відрізка та довжину його проекції на вісь Ox. У програмі організувати виклик цієї підпрограми.

24. Створити підпрограму, що одночасно обчислює найменше і найбільше значення серед двох дійсних чисел, та використати її для визначення, у скільки разів найменше значення з трьох заданих дійсних чисел перевищує найменше з них.

5. Одновимірні масиви

Масив - однорідна сукупність елементів.

Найпоширенішою структурою, реалізованої практично у всіх мовах програмування, є масив.

Масиви складаються з обмеженого числа компонентів, причому всі компоненти масиву мають один і той же тип, званий базовим. Структура масиву завжди однорідна. Масив може складатися з елементів типу integer, real або char, або інших однотипних елементів.

Інша особливість масиву полягає в тому, що програма може відразу отримати потрібний їй елемент за його порядковим номером (індексом).

Індекс масиву

Номер елемента масиву називається індексом. Індекс - це значення порядкового типу, визначеного, як тип індексу даного масиву. Дуже часто це цілочисельний тип (integer, word або byte), але може бути і логічний і символьний.

Опис масиву в Паскалі.

У мові Паскаль тип масиву задається з використанням спеціального слова array, і його оголошення в програмі виглядає наступним чином:

Type <ім'я _ типу> = array [І] of T;

де І - тип індексу масиву, T - тип його елементів.

Можна описувати відразу змінні типу масив, тобто в розділі опису змінних:

Var a, b: array [І] of T;

Зазвичай тип індексу характеризується деяким діапазоном значень будь-якого порядкового типу.

Наприклад, оголошення двох типів: vector у вигляді масиву з 10 цілих чисел і stroka у вигляді масиву з 256 символів:

Type

Vector=array [1..10] of integer;

Stroka=array [0..255] of char;

За допомогою індексу масиву можна звертатися до окремих елементів будь-якого масиву, як до звичайної змінної: можна отримувати значення цього елементу, окремо присвоювати йому значення, використовувати його в виразах.

Опишемо змінні типу vector і stroka:

Var a: vector;

c: stroka;

далі в програмі ми можемо звертатися до окремих елементів масиву a або c.

Наприклад, a [5]: = 23; c [1]: = 'w'; a [7]: = a [5] * 2; writeln (c [1], c [3]).

Одновимірні масиви, в яких кожен елемент має один індекс, що характеризує його місце в масиві.

Введення, обробка і виведення масиву здійснюються поелементно, з використанням циклу for.

Самий простий спосіб введення масиву - введення його з клавіатури. Розмірність масиву визначена константою, елементи вводяться по одному в циклі for.

При такому способі введення користувачеві доведеться ввести всі числових значень. При вирішенні навчальних завдань вводити масиви "вручну", особливо якщо їх розмірність велика, не завжди зручно. Існують, як мінімум, два альтернативних рішення:

· за допомогою констант;

· за допомогою генератора випадкових чисел.

Описувати масив у вигляді констант зручно, якщо елементи масиву не повинні змінюватися в процесі виконання програми. Як і інші константи, масиви констант описуються в розділі const.

Наприклад:

const a:array [1..5] of real=(

3.5, 2, -5, 4, 11.7

);

Формування масиву з випадкових значень доречно, якщо при вирішенні задачі масив служить лише для ілюстрації того чи іншого алгоритму, а конкретні значення елементів несуттєві.

Для того щоб отримати чергове випадкове значення, використовується стандартна функція random (N), де параметром N передається значення порядкового типу. Вона поверне випадкове число того ж типу, що тип аргументу і лежить в діапазоні від 0 до N-1 включно.Для того щоб при кожному запуску програми ланцюжок випадкових чисел був новим, перед першим викликом random слід викликати стандартну процедуру randomize, яка запускає генератор випадкових чисел.

Виведення масиву в Паскалі здійснюється також поелементно, в циклі, де параметром виступає індекс масиву, приймаючи послідовно всі значення від першого до останнього.

Задача 1

Відомі дані про щорічну кількість опадів, що випала за останні двадцять років спостережень. Необхідно:

1. Описати масив, за допомогою якого можна зберегти та обробити зібрані дані;

2. Увести в цей масив значення кількості опадів за кожний рік спостережень;

3. Визначити середню кількість опадів, що випала за роки спостережень;

4. Визначити відхилення від середньої кількості опадів для кожного року спостережень;

5. Визначити максимальну та мінімальну кількість опадів за рік (із зазначенням року, коли це було);

6. Розробити зручний інтерфейс користувача програми та вивести на екран отримані результати оброблення масиву опадів.

Program opadu;

Uses CRT;

Var

op:array[1..20] of real;

vid_op:array[1..20] of real;

s_op, sr_op,max_op,min_op:real;

nmax,nmin,і:integer;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to 20 do

begin

Write(`op[`,І,']=>');

Readln(op[і]);

end

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to 20 do

Writeln(op[І]:6:2);

end;

Procedure seredne;

Var

і:integer;

begin

s_op:=0;

For і:=1 to 20 do

s_op:=s_op+op[і];

sr_op:=s_op/20;

Writeln(`Serednya kilkist opadiv: `,sr_op:4:2);

end;

Procedure vidxulennya;

Var

і:integer;

begin

For і:=1 to 20 do

begin

vid_op[і]:=OP[і]-Sr_op;

Writeln(Vid_op[І]:6:2);

end

end;

Procedure vuvod1;

Var

і:integer;

begin

For і:=1 to 20 do

Writeln(Vid_op[І]:6:2);

End;

Procedure Max;

Var

і:integer;

begin

i:=1;

Max_op:=op[1];

Nmax:=1;

While і<20 do

begin

i:=і+1;;

If op[і]>max_op then

begin

Max_op:=op[і];

Nmax:=і

end;

end;

Writeln(`V `,nmax,' vupala cama bilsha kilkict opadiv: `,max_op:4:2);

end;

Procedure Min;

Var

і:integer;

begin

i:=1;

Min_op:=op[1];

Nmin:=1;

While і<20 do

begin

i:=і+1;;

If op[і]<min_op then

begin

Min_op:=op[і];

Nmin:=і

end;

end;

Writeln(`V `,nmin,' vupala cama mensha kilkict opadiv: `,min_op:4:2);

end;

Begin

clrscr;

vvod;

vuvod;

seredne;

vidxulennya;

vuvod1;

max;

min;

readln;

End.

Задача 2

Спортсменам фігуристам шість суддів виставляють оцінки. Технічний працівник змагань вилучає максимальну та мінімальну, а для залишених оцінок обчислює середнє арифметичне значення. Цей результат вважається балом, що отримав спортсмен.

Program balu_figyrust;

Uses CRT;

Var

sp1:array[1..6] of real;

sp2:array[1..6] of real;

sp3:array[1..6] of real;

nsp1:array[1..4] of real;

nsp2:array[1..4] of real;

nsp3:array[1..4] of real;

s_oz, sr_oz,max_oz,min_oz:real;

nmax,nmin,і:integer;

Procedure vvod(Var sp:array of real);

Var

і:integer;

begin

For і:=1 to 6 do

begin

Write('sp[',І,']=>');

Readln(sp[і]);

end

end;

Procedure vuvod(Var sp:array of real);

Var

і:integer;

begin

For і:=1 to 6 do

Writeln(sp[І]:6:2);

end;

Procedure seredne(Var sp:array of real);

Var

і:integer;

begin

S_oz:=0;

For і:=1 to 4 do

S_oz:=S_oz+sp[і];

Sr_oz:=s_oz/4;

Writeln('Rezyltat vustypy: ',sr_oz:4:3);

end;

Procedure vuvod1(Var sp:array of real);

Var

і:integer;

begin

For і:=1 to 4 do

Write(sp[І]:6:2);

end;

Procedure Max(Var sp:array of real);

Var

і,nmax:integer;

begin

i:=1;

Max_oz:=sp[1];

Nmax:=1;

While і<6 do

begin

i:=і+1;

If sp[і]>max_oz then

begin

Max_oz:=sp[і];

Nmax:=і

end;

end;

For і:=nmax to 6 do

Sp[і]:=sp[і+1];

end;

Procedure Min(Var sp:array of real);

Var

і,nmin:integer;

begin

i:=1;

Min_oz:=sp[1];

Nmin:=1;

While і<5 do

begin

i:=і+1;;

If sp[і]<min_oz then

begin

Min_oz:=sp[і];

Nmin:=і

end;

end;

For і:=nmin to 5 do

Sp[і]:=sp[і+1]

end;

Begin

clrscr;

vvod(sp1);

vuvod(sp1);

vvod(sp2);

vuvod(sp2);

vvod(sp3);

vuvod(sp3);

max(sp1);

min(sp1);

Vuvod1(sp1);

writeln;

Writeln('Sportsmen 1');

Seredne(sp1);

max(sp2);

min(sp2);

Vuvod1(sp2);

writeln;

Writeln('Sportsmen 2');

Seredne(sp2);

max(sp3);

min(sp3);

Vuvod1(sp3);

writeln;

Writeln('Sportsmen 3');

Seredne(sp3);

readln;

End.

Задача 3

Розробити програму, яка реалізує переміщення за певним правилом елементів одновимірного масиву.

Program ekcp_rab;

Uses CRT;

Const n=5;

Var

A:array[1..n] of integer;

i,z:integer;

Procedure Zapolni;

Var

і:1..n;

begin

Randomize;

For і:=1 to n do

A[і]:=random(100)

end;

Procedure vuvod;

Var

і:1..n;

begin

For і:=1 to n do

Write(A[І]:4);

end;

Procedure zsyv_vpr;

Var

і:1..n;

x:integer;

begin

x:=A[n];

For і:=n-1 downto 1 do

A[і+1]:=A[і];

A[1]:=x;

end;

Procedure zsyv_liv;

Var

і,x:integer;

begin

x:=a[1];

For і:=2 to n do

A[і-1]:=A[і];

A[n]:=x;

end;

Begin

clrscr;

zapolni;

vuvod;

writeln;

Writeln(`Yakuj zsyv vukonyvatu? Vpravo natusnit 1, vlivo - 2');

Readln(z);

If z=1 then

begin

zsyv_vpr;

vuvod;

end;

If z=2 then

begin

zsyv_liv;

vuvod;

end;

readln;

End.

Задача 4

Розробити програму, яка реалізує переміщення за певним правилом елементів одновимірного масиву. Циклічний зсув масиву виконується на k позицій.

Program ekcp_rab;

Uses CRT;

Const n=5;

Var

A:array[1..n] of integer;

i,z,j:integer;

Procedure Zapolni;

Var

і:1..n;

begin

Randomize;

For і:=1 to n do

A[і]:=random(100)

end;

Procedure vuvod;

Var

і:1..n;

begin

For і:=1 to n do

Write(A[І]:4);

end;

Procedure zsyv_vpr;

Var

і:1..n; x,j:integer;

begin

For j:=1 to 3 do

begin

x:=A[n];

For і:=n-1 downto 1 do

A[і+1]:=A[і];

A[1]:=x;

end;

end;

Procedure zsyv_liv;

Var

і,x:integer;

begin

For j:=1 to 4 do

begin

x:=a[1];

For і:=2 to n do

A[і-1]:=A[і];

A[n]:=x;

end;

end;

Begin

clrscr;

zapolni;

vuvod;

writeln;

Writeln(`Yakuj zsyv vukonyvatu? Vpravo natusnit 1, vlivo - 2');

Readln(z);

If z=1 then

begin

zsyv_vpr;

vuvod;

end;

If z=2 then

begin

zsyv_liv;

vuvod;

end;

readln;

End.

Задача 5

Заповніть одновимірний масив B[1..n] так, щоб значення кожного елемента з парним номером дорівнювало половині його номера, а значення кожного номера з непарним номером дорівнювало нюлю. Виведіть на екран елементи масиву В в рядок.

Program zapov;

Uses CRT;

Const n=15;

Var

B:array[1..n] of real;

a,і:integer;c:real;

Procedure zapovnennya;

Var

і,a:integer;c:real;

begin

i:=2;

While і<n do

begin

c:=і/2;

B[і]:=c;

i:=і+2;

end;

i:=1;

While і<=n do

begin

A:=0;

B[і]:=a;

i:=і+2;

end;

End;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to n do

Write(B[І]:4:0);

end;

Begin

clrscr;

zapovnennya;

vuvod;

readln;

End.

Задача 6

Заповніть та виведіть на екран одновимірний масив А[1..n] дл n>=4 так, щоб перший елемент дорівнював 1, другий - 2, а кожен наступний:

1. Сумі двох попередніх елементів;

2. Сумі всіх попередніх елементів;

3. Добутку його номера та значення попереднього елемента.

Program zapov1;

Uses CRT;

Const n=15;

Var

A:array[1..n] of integer;

s,d,і:integer;

Procedure zapovnennya1;

Var

і:integer;

begin

A[1]:=1;

A[2]:=2;

For і:=3 to n do

A[і]:=A[і-1]+A[і-2];

end;

Procedure zapovnennya2;

Var

і,s:integer;

begin

A[1]:=1;

A[2]:=2;

S:=A[1]+A[2];

For і:=3 to n do

begin

A[і]:=s;

S:=s+A[і];

end;

end;

Procedure zapovnennya3;

Var

і,d:integer;

begin

A[1]:=1;

A[2]:=2;

For і:=3 to n do

A[і]:=і*A[і-1];

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to n do

Write(A[І]:6);

end;

Begin

clrscr;

zapovnennya1;

writeln;

vuvod;

writeln;

zapovnennya2;

writeln;

vuvod;

writeln;

zapovnennya3;

writeln;

vuvod;

writeln;

readln;

End.

Задача 7

Заповніть одновимірний масив С[1..m] випадковими дійсними числами. Виведіть елементи цього масиву на екран та виконайте такі заміни:

1. Замініть значення кожного елемента з парним номером на 1, а з непарним - на -1;

2. Замініть кожний елемент, значення якого є парним, на обернене до нього число;

3. Замініть значення елементів, номери яких діляться на 3 без остачі, на середнє арифметичне значення всіх елементів початкового масиву.

Program zapovn;

const m=10;

Var

c:array[1..m] of real;

s,as;real;

і:integer;

Procedure zapov1;

Var

і:1..m;

begin

s:=0;

Randomize;

for і:1 to m do

begin

C[І]:=RANDOM(20);

s:=s+c[і];

end;

as:=s/m;

end;

Procedure vuvod;

Var

і:1..m;

begin

for i:=1 to m do

write(c[і]);

end;

Procedure zapov2;

Var

і:1..m;

begin

for і:=1 to m do

begin

if і mod 2 =0 then c[і]:=1

else C[і]:=-1;

end;

end;

Procedure zapov3;

Var

і:1..m;

begin

for і:=1 to m do

begin

if frac(C[і] mod 2)=0 then C[і]:=1/C[і]

else C[і]:=C[і];

end;

end;

Procedure zapov4;

Var

і:1..m;

begin

for і:=1 to m do

begin

if і mod 3=0 then C[і]:=as

else C[і]:=C[і];

end;

end;

Begin

clrscr;

zapov1;

writeln;

vuvod;

writeln;

zapov2;

writeln;

vuvod;

writeln;

zapov1;

zapov3;

writeln;

vuvod;

writeln;

zapov1;

zapov4;

writeln;

vuvod;

writeln;

readln;

End.

Задача 8

Користувач увів з клавіатури цілі значення елементів одновимірних масивів A[1..n] та B[1..n]. Сформуйте масив С, елементами якого є:

1. Спочатку елементи масиву А , а потім елементи масиву В;

2. Суми відповідних елементів масивів А та В;

3. Добуток відповідних значень елементів масиву А та номерів елементів масиву В.

Program sum_dob_masuv;

Uses CRT;

Const

n=5;

n1=10;

Var

A:array[1..n] of integer;

B:array[1..n] of integer;

C:array[1..n] of integer;

і:integer;

Procedure vvod;

Var

і:1..n;

begin

For і:=1 to n do

begin

Write('A[',І,']=>');

Readln(A[і]);

end;

For і:=1 to n do

begin

Write('B[',І,']=>');

Readln(B[і]);

end;

end;

Procedure vuvod;

Var

і:1..n;

begin

For і:=1 to n do

Write(a[і]:4);

writeln;

For і:=1 to n do

Write(b[і]:4);

end;

Procedure dod_elem;

Var

і:integer;

begin

For і:=1 to n do

C[і]:=A[і];

For і:=1 to n do

C[n+і]:=B[і];

end;

Procedure vuvod1;

Var

і:integer;

begin

For і:=1 to n1 do

Write(c[і]:4);

end;

Procedure suma;

Var

і:1..n;

begin

For і:=1 to n do

C[і]:=A[і]+B[і];

end;

Procedure dob;

Var

і:integer;

begin

For і:=1 to n do

C[і]:=A[і]*і;

end;

Procedure vuvod2;

Var

і:integer;

begin

For і:=1 to n do

Write(c[і]:4);

end;

Begin

clrscr;

vvod;

vuvod;

suma;

writeln;

vuvod2;

dob;

writeln;

vuvod2;

dod_elem;

writeln;

vuvod1;

readln;

End.

Задача 9

Елементи масиву А є дійсними числами, значення яких уводять з клавіатури. Визначте:

1. Суму та добуток значень усіх елементів масиву;

2. Кількість додатних, від'ємних та нульових елементів масиву;

3. Середнє арифметичне значення елементів масиву;

4. Максимальний та мінімальний елемент цього масиву із зазначенням їх номерів;

5. Найбільший елемент та його номер серед від'ємних елементів масиву;

6. Суму додатних елементів цього масиву;

7. Суму значень тих елементів масиву, номери яких діляться на 4 без остачі;

8. Суму квадратів елементів масиву, що мають непарні номери;

9. Суму значень тих елементів, що розміщені до максимального елемента цього масиву;

10. Кількість елементів, значення яких перевищує число с;

11. Добуток перших k елементів цього масиву.

Program z_9_1;

Uses CRT;

Var

A:array[1..20] of real;

s,d:real;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to 20 do

begin

Write(`A[`,І,']=>');

Readln(A[і]);

end

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to 20 do

Write(A[І]:6:2);

end;

Procedure syma;

Var

і:integer;

begin

S:=0;

For і:=1 to 20 do

S:=S+A[і];

Writeln(`S=`,s:4:2);

end;

Procedure dob;

Var

і:integer;

begin

D:=1;

For і:=1 to 20 do

D:=A[і]*D;

Writeln(`D=`,d:4:2);

End;

Begin

clrscr;

vvod;

writeln;

vuvod;

writeln;

syma;

dob;

readln;

End.

Program z_9_2;

Uses CRT;

Var

A:array[1..20] of real;

d,v,n:integer;

Procedure vvod;

Var

і:integer;

begin

For і:=1 to 20 do

begin

Write(`A[`,І,']=>');

Readln(A[і]);

end

end;

Procedure vuvod;

Var

і:integer;

begin

For і:=1 to 20 do

Write(A[І]:6:2);

end;

Procedure dodatni;

Var

і:integer;

begin

D:=0;

For і:=1 to 20 do

If A[і]>0 then d:=d+1

Writeln(`D=`,d:4:2);

end;

Procedure videmni;

Var

і:integer;

begin

v:=0;

For і:=1 to 20 do

If A[і]<0 then v:=v+1

Writeln(`V=`,v:4:2);

end;

Procedure nylovi;

Var

і:integer;

begin

N:=0;

For і:=1 to 20 do

If A[і]=0 then n:=n+1

Writeln(`N=`,n:4:2);

end;

Begin

clrscr;

vvod...


Подобные документы

  • Алгоритми розв’язання задач у вигляді блок–схем. Використання мови програмування MS VisualBasic for Application для написання програм у ході вирішення задач на одномірний, двовимірний масив, порядок розв’язання задачі на використання символьних величин.

    контрольная работа [742,9 K], добавлен 27.04.2010

  • Вирішення задач сортування в програмуванні та розробка ефективних алгоритмів сортування. Знайомство з теоретичним положенням, що стосуються методів сортування файлів, реалізації їх на мові програмування Turbo Pascal. Методи злиття впорядкованих серій.

    курсовая работа [46,9 K], добавлен 16.09.2010

  • Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.

    курсовая работа [232,2 K], добавлен 12.02.2013

  • Загальні відомості про процедури та функції. Характеристика, особливості і можливості мови Pascal, її використання для розробки наочних, компактних, структурованих програм, створення умов для систематичного і цілеспрямованого процесу програмування.

    реферат [30,0 K], добавлен 13.11.2010

  • Методика та порядок програмування алгоритмів циклічної структури із заданим числом повторень за допомогою мови програмування VAB. Алгоритм роботи з одновимірними масивами. Програмування алгоритмів із структурою вкладених циклів, обробка матриць.

    курсовая работа [27,7 K], добавлен 03.04.2009

  • Теоретичні аспекти програмування мовою Pascal. Основні поняття та елементи мови. Розділи оголошення сталих і змінних. Стандартні та нестандартні типи даних. Основні операції, стандартні функції та процедури, прості програми. Розгалуження, цикли, масиви.

    курсовая работа [122,5 K], добавлен 21.10.2012

  • Основні переваги програмування на мові Delphi. Використання стандартних операторів при створенні інтерфейсу користувача. Вибір складу технічних і програмних засобів, організація вхідних і вихідних даних. Розробка програми, блок-схеми та тексту програми.

    реферат [316,1 K], добавлен 22.01.2013

  • BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.

    курсовая работа [325,8 K], добавлен 12.06.2011

  • Застосування циклічних алгоритмів для створення циклів за допомогою умовного або безумовного переходів. Цикли з параметром та умовою (приклади). Використання операторів мови програмування Паскаль для організації повторюваних послідовностей дій (циклів).

    контрольная работа [435,9 K], добавлен 02.06.2012

  • Побудова блок-схем алгоритмів програм. Створення блок схем алгоритмів за допомогою FCEditor. Експорт блок-схеми в графічний файл. Огляд програмних та апаратних засобів. Мови програмування високого рівня. Цикли та умовний оператор IF з лічильником.

    дипломная работа [1,4 M], добавлен 15.12.2013

  • Стандартні розміри чисел при програмуванні на мові Асемблера. Робота з дробовими числами, використання математичного сопроцесора або його емулятора. Створення програми, яка б перетворювала ціле число в дробове і навпаки, а також функції [x], {x}, |X|.

    курсовая работа [22,0 K], добавлен 12.08.2009

  • Поняття процедури, її призначення, форма запису, складові частини. Звернення до процедури, формальні параметри та фактичні аргументи, відповідність. Модулі користувача, їх призначення, структура запису, складові частини, підключення модулів до програми.

    контрольная работа [587,3 K], добавлен 21.04.2011

  • Розв’язок багатокритеріальної задачі лінійного програмування з отриманням компромісного рішення (для задач з кількома функціями мети) за допомогою теоретико-ігрового підходу. Матриця мір неоптимальності та рядок функції мети. Модуль опису класу.

    курсовая работа [588,8 K], добавлен 15.05.2011

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Програми і мови програмування. Алфавіт мови програмування. Лексеми, зарезервовані слова мови Pascal. Ідентифікатори, типи даних. Арифметичні вирази, операції. Стандартні функції, структура програми. Процедури введення-виведення. Правила написання команд.

    лекция [445,0 K], добавлен 24.07.2014

  • Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.

    курсовая работа [11,0 K], добавлен 08.08.2009

  • Коректне використання операторів та конструкцій, побудова ефективних алгоритмів для розв'язку типових задач. Розробка алгоритмів та програми для створення бази даних телефонних номерів. Використання засобів розробки програмного забезпечення мовою Java.

    курсовая работа [1,0 M], добавлен 25.01.2016

  • Лінійне програмування як один з найбільш популярних апаратів математичної теорії оптимального управління рішень. Опис існуючих методів розв’язку задач лінійного програмування. Завдання, основні принципи, алгоритми і головна мета лінійного програмування.

    курсовая работа [363,8 K], добавлен 03.12.2009

  • Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.

    курсовая работа [1,1 M], добавлен 14.09.2012

  • Використання ітерацій для обчислення приблизних значень величин. Розробка ітераційних алгоритмів з перевіркою правильності введення даних. Побудова блок-схеми і програмування мовою Turbo Pascal обчислення значення функції, розкладеної в степеневий ряд.

    лабораторная работа [197,2 K], добавлен 16.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.