Масиви
Приклад 1.
1.
Const Namel: array [1..10] of real = (1, 3, 5, 7, 9, 0, 2, 4, 6, 8);
Сталий одновимірний масив Namel із
10 дійсних чисел; діапазон зміни
індексів 1..10.
2.
а) var Name2: array [1..10] of real;
б) const n=1;
m=10;
var Name2: array [n..m] of real;
Змінний одновимірний масив Name2 із 10 дійсних чисел; діапазон зміни індексів 1..10.
3.
а) type Massiv=array [1..10] of real;
var Name3: Massiv;
б) const n=1; m=10;
type Massiv = array [n..m] of real;
var Name3: Massiv;
Тип Massiv як множина всіх
одновимірних масивів із 10 дійсних чисел з діапазоном зміни індексів 1..10.
Змінний одновимірний масив Name3 як
проста змінна типу Massiv.
Приклад 2. Ввести з клавіатури в масив 20
цілих чисел.
program Zadacha62;
var A: array [1..10] of integer; i: integer;
begin
for i:=1 to 20 do read (A[i]);
end.
Приклад 3. Обчислити суму елементів масиву з
n цілих чисел.
program Zadacha66;
const n=10;
var a: array [1..n] of integer;
i, sum: integer;
begin
for
i:=1 to n do
begin
write ('Введіть',і, '- й
елемент масиву'); read
(a[i]);
end;
sum:=0;
for i:=1 to n do sum:=sum + a[i];
writeln ('Сума всіх елементів
масиву дорівнює: ', sum);
end.
Приклад 4. Знайти у масиві місце
розташування елементів із заданим значенням.
program Zadacha67;
const n=100;
var a: array [1..n] of real;
x: real; i: integer;
begin
writeln (Введіть елементи
масиву');
for
i:=1 to n do read (a[i]);
writeln ('Введіть значення для пошуку');
read
(x);
for
i:=1 to n do
if
a[i]=x then
writeln ('на',і, '- місці масиву розташований заданий елемент',х:8:2);
end.
Зразок програми на мові Pascal
program rescheto1; {Після назви програми записують БЛОК ОПИСІВ}
var {Після слова var оголошується змінні величини у програмі}
a: array [1..5000] of boolean; {ЦЕ лінійний масив із логічними значеннями}
n, x, y: integer; {Це три змінні із цілочисельними значеннями}
begin {Оголошується початок програми – БЛОК ОПИСУ ДІЙ}
write('n='); readln(n); {Оголошується запрос і введення найбільшого числа n}
a[1] := false; {1-е місце масиву a[х] присвоєно значення «хибне», 1 – непросте число}
for x:=2 to n do a[x] := true; {Цикл з лічильником масиву a[х] присвоює значення «істинне»}
for x:= 2 to n div 2{round(sqrt(N))} do {Для змінної х цикл з лічильником від 2 до n/2 (до n0,5)}
for y:= 2 to n div x do {Для змінної y маємо вкладений цикл з лічильником від 2 до n/ х}
a[x*y] := false; {Елементам a[x*y] присвоєно «хибне», бо це непросте число і кінець циклу}
for x:=1 to n do {Цикл з лічильником для перебігу по масиву a[х] від 1 до n}
if a[x] then write(x,' '); {неповне розгалуження для вияву по масиву a[х] усіх істинних значень}
readln; {Виводяться на друк тільки індекси х(прості числа) для усіх істинних значень масиву a[х]}
end. {Оголошується кінець програми – БЛОКУ ОПИСУ ДІЙ}
Завдання 1. Створити,
реалізувати та протестуватувати алгоритм мовою Pascal,
що отримує всі можливі варіанти перевезень 1000 штук цегли візками місткістю
100, 300, 400, 500 шт. цегли і підраховує їхню кількість.
Program CEGLA1;
const n=1000;
var a,b,c,d:array[1..201] of integer;
k,x,y,i,z,u: integer;
var a,b,c,d:array[1..201] of integer;
k,x,y,i,z,u: integer;
begin k:=0;
for x:= 0 to n div 100 do
begin writeln(x, ' =x');
for y:= 0 to n div 300 do
begin writeln(y, ' =y');
for z:= 0 to n div 400 do
begin writeln(z, ' =z');
for u:= 0 to n div 500 do begin
writeln(u, ' =u');
writeln(100*x+300*y+400*z+500*u, ' =100*x+300*y+400*z+500*u');
if (100*x+300*y+400*z+500*u)=n then
begin
k:=k+1; a[k]:=x; b[k]:=y; c[k]:=z; d[k]:=u;
end; end; end; end; end;
for i:= 1 to k do writeln(' 100 шт.
цегли: ', a[i], ' 300 шт. цегли: ', b[i], '
400 шт. цегли: ', c[i],
' 500 шт. цегли: ', d[i]);
writeln (' Кількість
способів перевезень ', n, ' шт. цегли: k= ', k); writeln(' ******'); end.
Протестуйте цей
алгоритм, якщо: 1) const n=900; 2)
const n=800; 3) const n=700; 4)
const n=600; 5)
const n=1500.
Завдання 2. Створити,
реалізувати та протестуватувати алгоритм мовою Pascal,
що отримує всі можливі варіанти пересилання поштою 120 книг ящиками місткістю 10, 15, 20, 50 книг і підраховує їхню кількість та
вартість, якщо ціна ящика на 10 книг – 4 грн, на 15 книг – 5.5 грн, на 20 книг – 7.5 грн, на 50 книг – 19
грн.
Program KNYGA2;
const n=120; var
a,b,c,d:array[1..201] of integer;
k,x,y,i,z,u: integer;
begin k:=0;
for x:= 0 to n div 10 do
begin writeln(x, ' =x');
for y:= 0 to n div 15 do
begin writeln(y, ' =y');
for z:= 0 to n div 20 do
begin writeln(z, ' =z');
for u:= 0 to n div 50 do begin
writeln(u, ' =u');
writeln(10*x+15*y+20*z+50*u, ' =10*x+15*y+20*z+50*u');
if (10*x+15*y+20*z+50*u')=n then
begin
k:=k+1; a[k]:=x; b[k]:=y; c[k]:=z; d[k]:=u;
end; end; end; end; end;
for i:= 1 to k do writeln(' 10 книг: ', a[i],
' 15
книг: ', b[i], ' 20 книг: ', c[i],
' 50 книг: ', d[i], ' Вартість
пересилки: ' , 4*a[i] +5.5*b[i]+
7.5*c[i]+ 19*d[i]);
writeln (' Кількість
способів перевезень ', n, ' книг: k= ', k); writeln(' ******'); end.
Протестуйте цей
алгоритм, якщо: 1) const n=90; 2)
const n=80; 3) const n=170; 4)
const n=60; 5)
const n=150.
Практична
робота 31. Обчислювальні
алгоритми на масивах.
Завдання 1. Створити та реалізувати алгоритм мовою Pascal, який підносить до квадрату парні остачі усіх чисел в одномірному масиві(рядок
чисел) при діленні на 7 і підносить до
кубу непарні остачі (mod 7) та
виводить результати цих дій у новий масив. І до того ж знаходить суму усіх цих остач. При цьому у початковому масиві числа задаються алгоритмом, як випадкові 7-цифрові
цілі від’ємні числа.
program MOD1; {Підрахунок і дії з остачами
для усіх елементів числового масиву}
const n=2; var
a, b: array [1..n] of integer; s, i:
integer;
begin writeln ( 'Виводиться ', n, ' випадкових
елементів масиву A:');
for i:=1 to n do begin a[i]:=-1000000-random(9000000); write('
а[', i, ']=: ', a[i]); write(' '); end; writeln; writeln
( 'Виводиться ', n, ' елементів масиву остач:');
s:=0; for i:=1
to n do begin b[i]:=a[i] mod 7; s:=s+b[i]; write('b[', i, ']= ', b[i]); write(' '); end; writeln; writeln('Сума усіх остач елементів
масиву =', s); writeln('***');
for i:=1 to n do begin if b[i] mod 2=0 then b[i]:= b[i]* b[i] else b[i]:= b[i]* b[i]* b[i];
write('c[', i, ']= ', b[i]); write(' '); end; writeln; writeln('************');end.
Протестувати алгоритм для 9-цифрових: а) const =9; б) const =8; в) const =25.
Завдання 2. Створити та реалізувати алгоритм мовою Pascal, який знаходить
парні числа і ділить ці числа на 2 та знаходить непарні числа і
подвоює їх в двовимірному масиві(таблиця чисел). При цьому у початковому
масиві алгоритмом задаються випадкові 8-цифрові цілі, як додатні так і від’ємні числа.
program ODD2; {Дії окремо з парними та окремо з непарними елементами масиву}
const n=3; var
a: array [1..n, 1..n] of
integer; j,
i, p: integer;
begin writeln ( 'Вводиться ', n*n, ' випадкових
елементів масиву');
for i:=1
to n do begin for j:=1 to n do begin a[i, j]:=-4000000+random(90000000);
write(' а[', i, ' ,' , j, ' ]= ', a[i, j]); write(' '); end; writeln(' '); end; writeln ('Масив:');
p:=0; for
i:=1 to n do begin for
j:=1
to n do begin
if (a[i, j] mod 2)=0 then
begin p:=p + 1; a[i, j]:=a[i, j] div 2 end else a[i, j]:=2*a[i, j];
write(' b[', i, ' ,' , j, ' ]=', a[i, j]); write(' '); end; writeln(' '); end; writeln;
writeln('Кількість
парних елементів масиву =', p);
writeln('Кількість
непарних елементів масиву =', n*n- p); writeln('*******');end.
Протестувати алгоритм для 4-цифрових: а) const =4; б) const =5; в) const =8.
Завдання 3. Створити та реалізувати алгоритм мовою Pascal, який виводить два масиви розміром nxn у вигляді рядків та стовпців і знаходить потроєну суму та потроєну різницю цих двох двовимірних масивів А та В(таблиці з різними числами, котрі збільшені в 3 рази), якщо у двох масивах
алгоритмом задаються випадкові 6-цифрові цілі
додатні числа.
program SUM3DELTA3; { Потроєна сума
або потроєна різниця масивів: С= 3А ±
3В}
const n=2; var
b, a: array [1..n, 1..n] of
integer; k,m, j, i: integer;
begin writeln ( 'Виводиться по ', n*n, ' випадкових
елементів масивів А та В');
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:= 100000+random(90000) ;
write(' a[',i,';',j,']:= ' , a[i,j]); end; writeln('
'); end;
writeln(' Другий масив:');
for i:=1 to n do
begin for j:=1
to n do begin b[i,j]:= 100000+random(90000);
write(' b[',i,';',j,']:= ', b[i,j]); end; writeln('
'); end; writeln(' ');
writeln(' Відповідь.');
for i:=1 to n do begin for j:=1 to n do begin write(' 3a+3b[', i, ' ,' , j, ' ]= ', 3*( a[i,j]+ b[i,j] )); end; writeln(' '); end;
writeln(' '); writeln(' '); for k:=1 to n do begin for m:=1
to n do begin write(' 3a-3b[', k, ' ,' , m, ' ]= ', 3*( a[k,m]- b[k,m])); end; writeln(' '); end;
writeln(' '); writeln; end.
Протестувати алгоритм для 10-цифрових: а) const =3; б) const =4; в) const =9.
Практична
робота 32. Обчислювальні
алгоритми на масивах.
Завдання 1. Створити та реалізувати алгоритм мовою Pascal, який знаходить потроєний квадрат суми усіх чисел в одномірному масиві, тобто С=
3(а1+а2+…+ар)2 і виводить
новий масив, в якому кожний і-ий елемент дорівнює числу: C -a і*aі , якщо у даному масиві А алгоритмом задаються
випадкові 7-цифрові цілі від’ємні числа.
program QUADRATSUMMA1; {Підрахунок потроєного
квадрату суми чисел масиву}
const n=2; var
a, b: array [1..n] of integer; c, s, i: integer;
begin writeln ( 'Вводиться ', n, ' випадкових
елементів масиву A:');
for i:=1 to n do begin a[i]:=-1000000-random(9000000);
write(' а[', i, ']=: ', a[i]); write(' '); end; writeln;
writeln ( 'Виводиться ', n, ' елементів нового
масиву різниць C -а І*аІ:');
s:=0; for i:=1
to n do s:=s+a[i]; C:=3*s*s;
for i:=1 to n do begin write('b[', i, ']= ', c- a[i]*a[i]); write(' '); end; writeln;
writeln('Потроєний
квадрат суми елементів масиву
А:', C); writeln('*****************');
end.
Протестувати алгоритм для 4-цифрових: а) const =7; б) const =6.
Завдання 2. Створити та реалізувати алгоритм мовою Pascal, який змінює усі числа на протилежні і обмінює числа місцями відносно
головної діагоналі в двовимірному
масиві, якщо у масиві алгоритмом задаються випадкові 8-цифрові цілі додатні і від’ємні
числа.
program TRANSPONUVAN2; {Обмін елементів масиву відносно головної діагоналі}
const n=3; var
a,b: array [1..n, 1..n] of integer; s, m, j, i, p: integer;
begin writeln ( 'Вводиться ', n*n, ' випадкових
елементів масиву');
for i:=1 to n do begin for j:=1
to n do begin
a[i, j]:=10000000+random(90000000)*(1- random(3));
write(' a[',i,';',j,']:= ' , a[i,j]); end; writeln('
'); end;
writeln(' Змінений масив:');
p:=0; for
i:=1 to n do begin for j:=1
to n do begin
b[i, j] :=- a[j,i]; write(' b[', i, ' ,' , j, ' ]=', b[i, j]); write(' '); end; writeln(' '); end; writeln;
writeln('*****************');end.
Протестувати алгоритм для 4-цифрових: а) const =2; б) const =4; в) const =5.
Завдання 3. Створити та реалізувати алгоритм мовою Pascal, який виводить два масиви розміром nxm у вигляді рядків та стовпців і знаходить поелементу різницю між потроєними числами першого рядка масиву та подвоєними числами другого рядка двовимірного масиву А(nxm) і результат записує у третій рядок, якщо у масиві А алгоритмом задаються випадкові 1-цифрові цілі додатні
числа.
program DELTA3; {Різниця
між потроєними числами першого рядка
масиву }
const n=3; const m=4;
var b, a: array [1..n, 1..m] of
integer; j, i: integer;
begin writeln ( 'Виведення ', n*m, ' випадкових
елементів масиву A: ');
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:= 1+random(10) ;
write(' a[',i,';',j,']:= ' , a[i,j]);
end; writeln(' '); end;
writeln(' ');
writeln('Шуканий масив: ');
for i:=1 to m do
begin a[3, i]:= 3*a[1, i]- 2*a[2,
i]; end;
for i:=1 to n do
begin for j:=1 to m do
begin
write(' b[',i,';',j,']:= '
, a[i,j]); end; writeln(' ');
end; writeln(' ');
writeln; end.
Протестувати алгоритм для а) випадкових 10-цифрових: const n=6; const m=9;
б)
випадкових 7-цифрових: const n=7; const m=8; в) 4-цифрових:
const n=4; const m=5.
Завдання 1. Самостійно створити, реалізувати
та протестуватувати алгоритм SYK3 мовою Pascal, що отримує всі
можливі варіанти розливання 30 літрів
соку у тару місткістю 1, 2, 3, 5 літрів
і підраховує їхню кількість та вартість,
якщо ціна тари на 1 літру – 9 грн, на 2 літри – 17.5 грн, на 3 літри –25.5 грн, на 5 літрів – 43 грн.
Завдання 2. Самостійно створити,
реалізувати та протестуватувати алгоритм BENZUN4 мовою Pascal, що отримує всі можливі варіанти розливання 45 літрів бензину у тару місткістю 5, 10, 15, 20 літрів і підраховує їхню кількість та
вартість, якщо ціна тари на 5 літрів – 145 грн, на 10 літрів – 275 грн, на 15 літрів
–425.5 грн, на 20 літрів – 550 грн.
Немає коментарів:
Дописати коментар