Двовимірний масив – це масив, де кожному елементу ставиться у відповідність два індекси. Такі масиви називають матрицею або прямокутною таблицею. Якщо у матриці однакова кількість стовпців і рядків то вона називається квадратною. Квадратна матриця має головну і побічну діагоналі.
Якщо матриця має розмір n x n.то головна починається елементом з індексами [1,1] (перший індекс – це номер рядка, другий - номер стовпця) і закінчується елементом з індексами [n,n], побічна починається елементом з індексами [1,n] і закінчується елементом з індексами [n,1].
Матриця А[n,m]
...
m
A[2,4]
A[5,1]
A[5,3]
…
…
…
…
…
…
…
…
n
Матриця B[n,n] Cірим кольором замальовані головна (B[1,1], B[2,2],…, B[n,n]) та побічна (B[1,n],B[2,n-1],…, B[n,1]) діагоналі.
…
n
…
n
1. Опис масиву
Сonst n=100;m=100;
Var A:array[1..n,1..100] of real;
B:array[1..10,1..100] of integer;
2. Очистка
For i:=1 to n do
For j:=1 to m do a[I,J]:=0;
і заповнення масиву
1. З клавіатури: For i:=1 to n do
For j:=1 to m do begin
writeln(‘введіть a[‘,I,’,’,J,’]:’);
readln(a[I,J]);
end;
2. По формулі : For i:=1 to n do
For j:=1 to m do
a[I,J]:=i*i+5; (будь-яка формула з і )
3. Випадковими числами в діапазоні [c,d]:
For i:=1 to n do
For j:=1 to m do
A[I,J]:=random(d-c)+d;
4. Із файла: For i:=1 to n do
For j:=1 to m do begin
read(File1,a[I,J]); ( якщо в файлі числа записані в рядку)
readln(File1,b[I,J]); (записані в стовпець, тобто, ідуть один під другим)
end;
3. Виведення на екран:
for i:=1 to n do begin
for j:=1 to m do
write(а[I,J],’ ’); в рядок
writeln; перехід на новий рядок
end;
Для масиву з дійсними числами бажано вказати формат виведення, наприклад
write(а[I,J]:10:3);
Для того, щоб працювати з елементами двовимірного масиву необхідні два цикла: один для переходу з рядка на рядок, другий – для переходу по стовпцям.
Завдання з розв'язками до тематичного оцінювання з теми "Одновимірні масиви."
1. Описати масив оцінок з тематичної атестації 20 учнів.
Відповідь: oc:array[1..20] of integer;
2. Описати масив цін 5 товарів на складі.
Відповідь:Var cena: array [1..5] of real;
3. Описати масив назв семи шкільних предметів.
Відповідь:Var nazva: array [1..7] of string;
4. Третьому елементу масиву а присвоїти число 255;
A[3]:=255;
5. Десятий елемент масиву а збільшити вдвічі;
A[10]:= A[10]*2;
6. Третій елемент масиву а зменшити на 100.
A[3]:= A[3]-100;
7. Сьомий елемент масиву поділити на другий.
A[7]:= A[7]/ A[2];
8. Записати команди вводу масиву назв пір року.
Відповідь:
For i:=1 to 4 do begin
Writeln(‘введіть назву пори року’);
Readln(nazva[i]);
End;
9. Записати команди вводу масиву десяти оцінок.
Відповідь:
For i:=1 to 10 do begin
Writeln(‘введіть оцінку’);
Readln(oc[i]);
End;
НАПИСАТИ ТЕКСТИ ПРОГРАМ
10. Видрукувати всі елементи масиву, які більші від 0,5.
Відповідь:
Program q11;
Var a:array[1..100] of real;
I,n:integer;
Begin
Writeln(‘Введіть кількість елементів’);
Readln(n);
for i:=1 to n do begin
writeln(‘Введіть елемент масиву’);
readln(a[i]);
end;
for i:=1 to n do if a[i]>0.5 then writeln(a[i], ‘>0,5’);
readln;
end.
11. Заданий масив a[1..8]. Побудувати масив d[1..8] за таким правилом
D[i]=2a[i].
Відповідь:
Program q2;
Var a,d:array[1..8] of real;
I,n:integer;
Begin
for i:=1 to 8 do begin
writeln(‘Введіть елемент масиву’);
readln(a[i]);
end;
for i:=1 to 8 do d[i]:=2*a[i];
for i:=1 to 8 do write(d[i]:6);
readln;
end.
12. Мінімальний елемент масиву b[1..6] збільшити у 7 разів. Впорядкувати елементи масиву за спаданням.
Відповідь:
Program q12;
Var b:array[1..6] of real;
Nom,I,j:integer; min,c:real;
Begin
for i:=1 to 6 do begin
writeln(‘Введіть елемент масиву’);
readln(b[i]);
end;
min:=b[1]; nom:=1;
for i:=1 to 6 do
if b[i] < min then begin
min:=b[i]; {знаходимо мінімальний елемент}
nom:=I; {та його номер}
end;
b[nom]:=b[nom]*7; {збільшуємо мінімальний елемент у 7 разів}
for i:=1 to 5 do
for j:=2 to 6 do
if b[i]<b[j] then begin
c:=b[i]; {впорядковуємо елементи масиву за
b[i]:=b[j]; спаданням}
b[j]:=c;
end;
for i:=1 to 8 do write (b[i]:8:2); {виводимо впорядкований масив на
readln; екран}
end.
13. Заданий масив народження п’яти учнів. Дати відповідь, чи хтось народився у жовтні.
Відповідь:
Program q13;
Var m:array[1..5] of integer;
I,k:integer;
Begin
for i:=1 to 5 do begin
writeln(‘Введіть номер місяця народження учня’);
readln(m[i]);
end;
k:=0;
for i:=1 to 5 do if m[i]=10 then k:=k+1; (підрахунок тих, хто народився
у жовтні)
if k>o then writeln(‘Так ,’ , k , ‘учнів народилося у жовтні’)
else writeln (‘Ні, таких немає’);
readln;
end.
14. Найбільший елемент масиву P[1..9] замінити на його квадрат. Впорядкувати елементи масиву за зростанням.
Відповідь:
Program q14;
Var p:array[1..9] of real;
Nom,I,j:integer; max,c:real;
Begin
for i:=1 to 9 do begin
writeln(‘Введіть елемент масиву’);
readln(p[i]);
end;
max:=p[1]; nom:=1;
for i:=1 to 9 do
if p[i] > max then begin
max:=p[i]; {знаходимо максимальний елемент}
nom:=I; {та його номер}
end;
p[nom]:=sqr(p[nom]); {змінюємо максимальний елемент на його квадрат}
for i:=1 to 8 do
for j:=2 to 9 do
if p[i]>p[j] then begin
c:=p[i]; {впорядковуємо елементи масиву за
p[i]:=p[j]; зростанням}
p[j]:=c;
end;
for i:=1 to 9 do write (p[i]:8:2); {виводимо впорядкований масив на
readln; екран}
end.
15. Додатні елементи масиву a[1..8] зменшити на 5, а від’ємні збільшити на число 2.
Відповідь:
Program q15;
Var a:array[1..8] of real;
I:integer;
Begin
for i:=1 to n do begin
writeln(‘Введіть елемент масиву’);
readln(a[i]);
end;
for i:=1 to n do begin
if a[i] > 0 then a[i]:=a[i]-5 ; {зменшення на 5 додатного елемента}
if a[i] < 0 then a[i]:=a[i]+2; {збільшення не 2 від’ємного елемента}
end;
for i:=1 to n do write(a[i]:8:2);
readln;
end.
16. В масиві a[n] мінімальний і максимальний елементи поміняти місціями.
Відповідь:
Program q16;
Var a:array[1..100] of integer;
I , n, nommin, nommax, max, min:integer;
Begin
Writeln(‘Введіть кількість елементів’);
Readln(n);
for i:=1 to n do begin
writeln(‘Введіть елемент масиву’);
readln(a[i]);
end;
min:=a[1]; nommin:=1;
max:=a[1]; nommax:=1;
for i:=1 to n do
if a[i] > max then begin
max:=a[i]; {знаходимо максимальний елемент}
nommax:=I; {та його номер}
end;
if a[i] <min then begin
min:=a[i]; {знаходимо мінімальний елемент}
nommin:=I; {та його номер}
end;
a[nommax]:=min; {максимальний елемент замінили мінімальним}
a[nommin]:=max; {мінімальний елемент замінили максимальним}
for i:=1 to n do write(a[i]:8);
readln;
end.
17. Визначити кількість елементів масиву a[n], більших від числа 1000.
Відповідь:
Program q17;
Var a:array[1..100] of integer;
I , n, k:integer;
Begin
Writeln(‘Введіть кількість елементів’);
Readln(n);
for i:=1 to n do begin
writeln(‘Введіть елемент масиву’);
readln(a[i]);
end;
k:=0;
for i:=1 to n do
if a[i] > 1000 then k:=k+1;
writeln(‘k= ’ , k);
readln;
end.
18. Задані два масиви a[1..10] і b[1..10], у якому із них менше від’ємних елементів?
Відповідь:
Program q18;
Var a, b:array[1..10] of integer;
I , ka, kb :integer;
Begin
for i:=1 to 10 do begin
writeln(‘Введіть елемент масиву a’);
readln(a[i]);
end;
for i:=1 to 10 do begin
writeln(‘Введіть елемент масиву b’);
readln(b[i]);
end;
ka:=0; kb:=0;
for i:=1 to 10 do begin
if a[i] < 0 then ka:=ka+1; {рахунок від’ємних елементів масиву а}
if b[i] < 0 then kb:=kb+1;{ рахунок від’ємних елементів масиву b}
end;
if ka < kb then writeln(‘менше від’ємних елементів в масиві а’) else if ka=kb then writeln(‘від’ємних елементів порівну’) else writeln(‘менше від’ємних елементів в масиві b’)
readln;
end.
19. Барон Мюнхгаузен, вийшовши на полювання, зарядив свою рушницю кісточками вишень. Після того, як він вдало влучив поміж роги оленям (в яких влучило відповідно k1, k2, ..., kN кісточок), у них на головах виросли чудові молоді вишеньки. Скільки саджанців зміг подарувати барон Мюнхгаузен садівникам дослідникам?
Відповідь:
Program q19;
Uses crt;
Var N:word; {N — кількість оленів}
К:аггау[1..100] of integer; {K — зарезервований масив для зберігання кількості кісточок, що влучили в оленів)
і,Sum:integer; {і — змінна циклу, Sum — загальна кількість кісточок, що влучили в оленів}
Begin
Randomize; {Ця процедура запускається з метою зробити числа генератора випадкових чисел більш «випадковими»)
Clrscr; {очищення екрану}
Sum:=0; {На початку роботи програми Мюнхгаузен ще ні в кого не влучив)
Write('Введіть кількість оленів, в яких влучив Мюнхгаузен (<=100): ');
Readln(N);
For і:=1 to N do Begin к[і] :=random(50)+20{Заповнення массиву випадковими числами в діапазоні від 20 до 70)
Write(K[i]:5); Виведення масиву на екран для контролю правильності роботи програми}
Sum:=Sum+K[i];
End;
Writeln; {Переведення курсору на новий рядок)
Writeln( ' Кількість нових саджанців ‘, Sum) ;
Readkey; {Затримка зображення на екрані)
End.
20. Середню групу дитячого садочка вивели на прогулянку. Скільки дівчаток і скільки хлопчиків видно з-за паркану, якщо зріст хлопчиків задається у сантиметрах від'ємними числами, а дівчаток — додатними у вигляді цілих значень a , а , ..., а ? Крім того, у всіх дівчаток на голівках зав'язані бантики заввишки 10 см, а висота паркану Н см.
Розв'язання:
Program q20;
Uses crt;
Var N,H:word; {N — кількість дітей в дитсадочку, Н — висота паркану)
А:array[1..100] of integer; {A — зарезервований масив для зберігання зросту дітей)
21. Умова: Дано дійсні числа а1951, а1952, ..., а2002 — кількість опадів (у мм), що випали у місті за останні 52 роки минулого століття. Обчислити середню кількість опадів за цей період і щорічне відхилення від середнього значення.
Розв'язання:
В цій задачі доведеться організовувати проходження по масиву двічі, оскільки першим проходженням ми знайдемо тільки суму всіх опадів, що випали за останні 50 років, а потім, поділивши отриманий результат на 50, знайдемо середню кількість опадів за вказаний період.
Другим же проходженням ми можемо вже визначити щорічне відхилення від середнього значення, причому для того, щоб не втратити вхідні дані, зарезервуємо в програмі ще один масив на 50 дійсних чисел для зберігання цих результатів.
Program q21;
Uses crt;
Var N,і:integer; (N — кількість елементів масиву, і — змінна циклу}
A : array [1951. .2002] of real; {A - масив для зберігання кількості опадів у відповідному році}
В:array[1951..2002] of real; {В - масив для зберігання відхилення від середнього значення}
Begin Randomize;
Clrscr;
Sum:=0;
For і:=1951 to 2000 do Begin
A[i]:=random(500)/7; (Заповнення масиву випадковими дійсними числами}
Write(A[i]:8:2); (Виведення масиву на екран для контролю правильності роботи програми)
Sum:=Sum+A[i];
End;
Sum:=Sum/52; (Знаходження середньої кількості опадів за рік}
Writeln;
Writeln('Щорічні відхилення від середньої кількості опадів за період 1951 — 2003 p.p.');
For і:=1951 to 2000 do Begin
В [і]:=Sum — А [і]; (Знаходження щорічного відхилення}
Write(В[і]:8:2); (Виведення результатів на екран)
End;
Readkey; (Затримка зображення на екрані}
End.
22. Відома кількість автобусів, що обслуговують автовокзал, кількість пасажирських місць у кожному автобусі, а також щоденна кількість рейсів кожного автобуса. Визначити максимальну кількість пасажирів, яку можуть перевезти всі автобуси разом за тиждень.
Розв'язання:
Program q22;
Uses crt;
Var kavto,kpas:word;
А:array[1..100] of byte; {кількість пасажирських місць у кожному
з автобусів}
b:array[1..100] of byte; {щоденна кількість рейсів кожного автобуса}
і:integer; {і — змінна циклу}
Begin
Write('Введіть кількість автобусів ');
Readln (kavto) ;
For і:=1 to kavto do Begin
Writeln(‘Введіть кількість пасажирських місць у ’, I ,’автобусі’);
Readln(a[i]);
Writeln(‘Введіть кількість рейсів ’, I ,’- го автобуса’);
Readln(b[i]);
End;
Kpas:=0;
For і:=1 to kavto do Begin Kpas:= Kpas+a[i]*b[i];
Writeln (‘Максимальна кількість пасажирів = ’, kpas);
Readkey; {Затримка зображення на екрані}
End.
23. Відома кількість кают океанського лайнера, а також кількість пасажирських місць у кожній каюті. Визначити номера всіх кают, у яких максимальна кількість місць.
Розв'язання:
Program q23;
Uses crt;
Var kkajut, max:word;
kpmest:array[1..1000] of byte; {масив кількості пасажирських місць у кожній з кают}
і:integer; {і — змінна циклу}
Begin
Write('Введіть кількість кают ');
Readln (kkajut) ;
For і:=1 to kkajut do Begin
Writeln(‘Введіть кількість пасажирських місць у ’, I ,’каюті’);
Readln(kpmest [i]);
End;
max:= kpmest [1];
For і:=2 to kkajut do {знаходження максимальної кількості
If kpmest [i]>max then max:= kpmest [i]; пасажирських місць у каюті}
For і:=1 to kkajut do
If kpmest [i]=max then writeln(‘Каюта з номером ’,I, ‘має максимальну кількість місць’);
Readkey; {Затримка зображення на екрані}
End.
24. Відома кількість учнів у кожному з k класів школи. Визначити скільки всього учнів навчається в тих класах школи, у яких не менше ніж 30 чоловік.
Розв'язання:
Program q24;
Var a:array[1..100] of integer;
I , n, s:integer;
Begin
Writeln(‘Введіть кількість класів у школі’);
Readln(n);
for i:=1 to n do begin
writeln(‘Введіть кількість учнів у класі’);
readln(a[i]);
end;
s:=0;
for i:=1 to n do
if a[i] > =30 then s:=s+a[i];
writeln(‘В цих класах навчається всього ’ , s, ‘ учнів’);
readln;
end.
25. Відома кількість кают океанського лайнера, а також кількість пасажирських місць у кожній каюті. Визначити кількість пасажирів, яких можна буде розмістити в тих каютах, у яких максимальна кількість місць.
Розв'язання:
Program q25;
Uses crt;
Var kkajut, max,k,vsego:word;
kpmest:array[1..1000] of byte; {масив кількості пасажирських місць у кожній з кают}
і:integer; {і — змінна циклу}
Begin
Write('Введіть кількість кают ');
Readln (kkajut) ;
For і:=1 to kkajut do Begin
Writeln(‘Введіть кількість пасажирських місць у ’, I ,’каюті’);
Readln(kpmest [i]);
End;
max:= kpmest [1];{нехай максимальна кількість місць у першій каюті}
For і:=2 to kkajut do {знаходження максимальної кількості
If kpmest [i]>max then max:= kpmest [i]; пасажирських місць у каюті}
For і:=1 to kkajut do
If kpmest [i]=max then k:=k+1; {підрахунок кількості кают з максимальною кількістю місць}
Vsego:=k*max;
Writeln(‘У каютах з максимальною кількістю місць можна розмістити’, vsego, ’ пасажирів’);
Readkey; {Затримка зображення на екрані}
End.
Завдання для самостійної роботи з теми "Одновимірні масиви"
1. Визначити суму від’ємних непарних елементів масиву.
2. Визначити добуток елементів масиву.
3. Знайти кількість додатних парних елементів масиву.
4. Знайти добуток елементів масиву менших заданого числа А.
5. Знайти суму елементів з непарними номерами.
6. Знайти середнє арифметичне елементів з парними номерами.
7. Знайти добуток елементів масиву які кратні 5 і не кратні 10.
8. Даний масив дійсних чисел. Знайти суму цілих частин елементів цього масиву.
9. Знайти добуток дробових частин масиву дійсних чисел.
10. Знайти кількість 2, 5 і 10 в масиві А.
11. Поділити елементи масиву на перший його елемент.
12. Поділити елементи масиву на останній його елемент.
13. Визначити суму перших 10 елементів масиву.
14. Визначити суму останніх 5 елементів масиву.
15. Знайти мінімальний додатній та мінімальний від’ємний елементи масиву.
16. Знайти максимальний додатній та максимальний від’ємний елементи масиву.
17. Визначити кількість елементів масиву більших за їх середнє арифметичне.
18. Замінити в масиві непарні числа їх квадратами, парні двійками, нулі максимальним числом типу Integer.
19. У масиві знайти суму чисел, що закінчуються 8.
20. Переставити у масиві числа так, щоб спочатку йшли від’ємні, потім додатні, за ними нулі.
21. Вибрати із масиву 100 чисел прості числа. Вивести на екран масив простих чисел.
22. Знайти кількість розміщених послідовно додатних елементів, якими закінчується масив А.
23. У масиві А знайти найбільшу кількість розміщених послідовно від’ємних елементів.
24. Дані дійсні числа а1, а2,...а16. Одержати мінімальне серед добутків а1*а9, а2*а10, ...,а9*а18.
25. Даний цілочислений масив. Всі елементи масиву, що стоять до першого мінімального числа помножити на це мінімальне число.
26. В масиві є К від’ємних елементів (К>10). Вивести на екран суму квадратів другого і десятого від’ємних елементів.
27. Знайти найбільше і найменше значення модуля різниці між двома сусідніми елементами масиву.
28. Відома кількість контейнерів з меблями. Про кожен контейнер відома кількість однакових комплектів меблів, що містяться в ньому, а також ціна одного комплекту. Яку суму грошей можна одержати, реалізувавши всі меблі.
29. Відома кількість автобусів, що обслуговують автовокзал. У кожного автобуса свій маршрут. Про кожний автобус відомо:
1. Кількість бензину у літрах, що витрачає автобус на 100 км шляху.
2. Щоденна кількість рейсів.
3. Довжина рейса у кілометрах.
Визначити номер автобуса, що витратить за день найбільшу кількість бензину.
30. Відома кількість мешканців, що проживають у кожній квартирі К квартирного будинку. Визначити кількість незаселених квартир.
31. Відома кількість кают океанського лайнера, а також кількість пасажирських місць у кожній каюті і кількість пасажирів, що відправляються у круіз на цьому лайнері.. Визначити чи можна всіх пасажирів розмістити в каютах так, щоб усі каюти з максимальною кількістю місць залишились незайнятими.
32. Відома кількість кают океанського лайнера, а також кількість пасажирських місць у кожній каюті і кількість пасажирів, що відправляються у круіз на цьому лайнері.Про кожну каюту відомо:
1. Кількість пасажирських місць.
2. Номер каюти, тризначне число, перша цифра якого – тризначне число, перша цифра якого – клас каюти (наприклад №123, - каюта №23 першого класу).
Визначити, чи можна всіх пасажирів розмістити так, щоб хоча б дві каюти другого класу з мінімальною кількістю місць виявилися незайнятими.
Завдання з розв'язками до тематичного оцінювання з теми "Двовимірні масиви"
1. Описати двовимірний масив , у якому 10 рядків і 10 стовпчиків з чисел типу Integer.
Відповідь:
Var a:array[1..10,1..10] of integer;
2. Описати двовимірні масиви a,b,c у яких 100 рядків і 100 стовпчиків з чисел типу Real;
Відповідь:
Var a, b, c :array[1..100,1..100] of real;
3. Запишіть вираз: значення елементу масиву А не перевищує 100.
Відповідь: А[I,J] < = 100
4. Запишіть вираз: значення елементу масиву А належить проміжку [-8,15].
Відповідь: (А[I,J] > = -8) and (А[I,J] < = 15).
НАПИСАТИ ТЕКСТИ ПРОГРАМ
5. Знайти суму елементів двовимірного масиву А.
Відповідь:
Program qq5;
Var A:array[1..100,1..100] of real; I , j , m ,n:integer;
S:real;
Begin
Writeln(‘Введіть кількість рядків і кількість стовпців масиву’);
Readln(n,m);
For i:=1 to n do
For j:=1 to m do a[I,J]:=0; {очистка масиву}
For i:=1 to n do
For j:=1 to m do begin
writeln(‘введіть a[‘,I,’,’,J,’]:’);
readln(a[I,J]); {введення елементів масиву з клавіатури}
end;
s:=0;
For i:=1 to n do
For j:=1 to m do begin
S:=s+a[I,J]; {знаходження суми елементів масиву}
Writeln(‘s= ’, s:8:2);
Readln;
End.
6. Знайти добуток кратних 3 елементів двовимірного масиву В.
Відповідь:
Program qq6;
Var A:array[1..100,1..100] of integer;
I,J,D,n,m:integer;
Begin
Writeln(‘Введіть кількість рядків і кількість стовпців масиву’);
Readln(n,m);
For i:=1 to n do
For j:=1 to m do a[I,J]:=0; {очистка масиву}
For i:=1 to n do
For j:=1 to m do
a[I,J]:=random(50)-25; {заповнення масиву випадковими числами}
writeln(‘Сформований масив чисел’);
For i:=1 to n do begin
For j:=1 to m do {виведення створеного масиву на екран}
Writeln(a[I,J]: 8); {по m чисел в рядку}
Writeln;
End;
d:=1;
For i:=1 to n do
For j:=1 to m do
If a[I,J] mod 3=0 then d:=d*a[I,J]; {знаходження добутку}
Writeln(‘d= ’, d:8:2);
Readln;
End.
7. Знайти середнє арифметичне парних чисел двовимірного масиву А.
Відповідь:
Program qq7;
Var A:array[1..100,1..100] of integer;
I,J,S,K,n,m:integer;
SA:real;
Begin
Writeln(‘Введіть кількість рядків і кількість стовпців масиву’);
Readln(n,m);
For i:=1 to n do
For j:=1 to m do a[I,J]:=0; {очистка масиву}
For i:=1 to n do
For j:=1 to m do
a[I,J]:=random(50)-25; {заповнення масиву випадковими числами}
writeln(‘Сформований масив чисел’);
For i:=1 to n do begin
For j:=1 to m do {виведення створеного масиву на екран}
Writeln(a[I,J]: 8); {по m чисел в рядку}
Writeln;
End;
K:=0; S:=0;
For i:=1 to n do
For j:=1 to m do
If a[I,J] mod 2 = 0 then begin
s:=s+a[I,J]; {знаходження суми парних елементів}
k:=k+1; {знаходження кількості парних елементів} end;
If k=0 then writwln(‘у масиві немає парних чисел’) else begin
SA:=s/k;
Writeln(‘SA= ’, SA:8:2);
End;
Readln;
End.
8. Всі елементи стовпця масиву A і всі елементи рядка, де знаходиться мінімальний елемент, замінити нулями.
Відповідь:
Program qq8;
Var A:array[1..100,1..100] of integer;
I,J,min, imin,jmin,n,m:integer;
Begin
Writeln(‘Введіть кількість рядків і кількість стовпців масиву’);
Readln(n,m);
For i:=1 to n do
For j:=1 to m do a[I,J]:=0; {очистка масиву}
For i:=1 to n do
For j:=1 to m do
a[I,J]:=random(50)-25; {заповнення масиву випадковими числами}
writeln(‘Сформований масив чисел’);
For i:=1 to n do begin
For j:=1 to m do {виведення створеного масиву на екран}
Writeln(a[I,J]: 8); {по m чисел в рядку}
Writeln;
End;
Min:=A[1,1];
For i:=1 to n do
For j:=1 to m do
If a[I,J] <min then begin
min:=a[I,j]; { пошук мінімального елемента}
imin:=I; { пошук номера рядка , де він знаходиться}
jmin:=J; { пошук номера стовпця , де він знаходиться }
end;
For i:=1 to n do A[I,jmin]:=0; {Заміна елементів стовпця в якому знаходиться мінімальний елемент нулями}
For j:=1 to m do A[imin,j]:=0; {Заміна елементів рядка в якому знаходиться мінімальний елемент нулями}
For i:=1 to n do begin
For j:=1 to m do {виведення нового масиву на екран}
Writeln(a[I,J]: 8); по m чисел в рядку}
Writeln;
End;
Readln;
End.
9. Роздрукувати у рядок елементи, що розташовані в першому стовпчику двовимірного масива А.
Розв'язання: В даній задачі, хоча задана таблиця двовимірна, другий індекс у всіх елементів, що будуть друкуватися, дорівнює 1, тому достатньо одного циклу по рядках для виконання задачі.
Program qq9;
Uses crt;
Var A:array[l..100,l..100] of real;
i,j,m,n:integer; {i,j - Змінні циклу}
Begin
Randomize;
Clrscr;
Readln(n,m);
For і: =1 to n do
For j:=1 to m do
A[i,j]:=random*50-random*30;
writeln;
For i:=1 to n do begin
For j:=1 to m do {виведення масиву на екран}
Writeln(a[I,J]: 8:2); по m чисел в рядку}
Writeln;
Writeln('Перший стовпчик масиву:');
For i:=l to n do begin
Write(A[i,l]:8:2); end;
Readkey; {Затримка зображення на екрані}
End.
10. Роздрукувати у рядок елементи, розташовані на бічній діагоналі двовимірного масиву А.
Розв'язання: Нагадуємо, що на бічній діагоналі елементи мають таку властивість: сума номера рядка та номера стовпчика дорівнює розмірності
масиву +1, тобто номер стовпчика обчислюється за наступною формулою:j = n-1+i.
Тоді програма для розв'язання даної задачі має такий вигляд:
Program qq10;
Uses crt;
Const n = 10;
Var A:array[l..n,l..n] of real;
і, j : integer; { і, j - змінні циклу}
Begin
Randomize;
Clrscr;
{Заповнення масиву випадковими числами та виведення його на екран)
For і: =1 to n do Begin
For j:=1 to m do begin
A[i,j]:=random(500)/ll-random*30;
Write(A[i,j]:8:2); end;
writeln;
End;
Readln; (Затримка зображення на екрані)
Writeln('Бічна діагональ масиву:');
For і: =1 to n do begin
Write(A[i,n-i+l]:8:2);
end;
Readkey; (Затримка зображення на екрані)
End.
11. Знайти суму парних елементів кожного рядка двовимірного масиву.
Program qq11;
Uses crt;
Var A:array[l..100,l..100] of integer;
i,j,s,n,m:integer; {i,j - Змінні циклу}
Begin
Randomize;
Clrscr;
Readln(n,m);
For і: =1 to n do
For j:=1 to m do
A[i,j]:=random(50)-20;
writeln;
For i:=1 to n do begin
For j:=1 to m do {виведення масиву на екран}
Writeln(a[I,J]: 8); по m чисел в рядку}
Writeln;
For і: =1 to n do begin
S:=0; {занулення суми при переході на новий рядок}
For j:=1 to m do
If a[I,j] mod 2 = then S:=S+A[i,j];{накопичення суми парних елементів рядка
Writeln(‘В рядку ’, I, ‘ сума парних елементів = ’, s);
End;
Readkey; {Затримка зображення на екрані}
End.
12. Знайти мінімальний елемент та його індекси у кожному стовпці двовимірного масиву А.
Program qq12;
Uses crt;
Var A:array[l..100,l..100] of integer;
i,j,min,imin,n,m:integer; {i,j - Змінні циклу}
Begin
Randomize;
Clrscr;
Readln(n,m);
For і: =1 to n do
For j:=1 to m do
A[i,j]:=random(50)-20;
writeln;
For i:=1 to n do begin
For j:=1 to m do {виведення масиву на екран}
Writeln(a[I,J]: 8); по m чисел в рядку}
Writeln;
For j: =1 to m do begin
Min:=a[1,j]; {нехай мінімумом буде перший елемент стовпця}
For i:=1 to n do
If a[I,j] <min then begin
min:=A[i,j];{Знаходження мінімального елемента в стовпці}
Завдання для самостійної роботи з теми "Двовимірні масиви"
1. Обчислити добуток всіх ненульових елементів масиву.
2. Мінімальний елемент масиву збільшити в два рази.
3. Вивести середнє арифметичне додатних елементів масиву.
4. Всі не додатні елементи масиву збільшити на 200.
5. Обчислити суму елементів масиву, що належать інтервалу (-4,0).
6. Максимальні елементи масиву збільшити у чотири рази.
7. Знайти добуток додатних елементів над головною діагоналлю.
8. Обчислити середнє геометричне додатних елементів масиву.
9. Другий рядок масиву замінити мінімальним елементом масиву.
10. Знайти середнє арифметичне значення елементів головної діагоналі масиву.
11. Знайти суми елементів стовпців і добуток елементів рядків.
12. Для кожного стовпця масиву знайти і надрукувати номера рядків, в яких всі елементи додатні.
13. Знайти суму елементів масиву, що знаходяться під головною діагоналлю.
14. Знайти номер рядка, що містить мінімальну кількість нульових елементів.
15. Поміняти місцями у масиві перший і останній рядки.
16. Знайти середнє арифметичне в кожному стовпці масиву.
17. Знайти кількість нульових елементів у кожному рядку масиву.
18. Знайти кількість парних і непарних елементів у кожному стовпці масиву.
19. Знайти мінімальний елемент серед додатних парних елементів і його індекси для кожного стовпця.
20. Знайти середнє арифметичне від’ємних елементів кожного рядка.
21. Знайти мінімальний і максимальний елементи масиву. Помножити елементи рядка, де знаходиться мінімум на максимальний елемент.
22. Знайти і вивести на екран індекси тих елементів масиву, для яких A[I,j]=a[J,i].
23. Визначити номера тих рядків масиву для яких другий елемент менший за перший.
24. Для кожного рядка масиву знайти добуток елементів з парними номерами.
25. Визначити для кожного рядка суму елементів, що перевищують задану величину С.
26. Для кожного стовпця знайти добуток елементів, серед них знайти мінімальний.
8.Процедури і функції
(підпрограми)
Підпрограмою — називається найменована логічно закінчена група вказівок, яку можна викликати для виконання довільну кількість раз з різних місць програми.
Процедура — це незалежна найменована частина програми, призначена для виконання конкретних дій.
Процедура складається із заголовка і тіла. Це — нібито програма в мініатюрі. Коли процедура виконає своє завдання, програма продовжить виконуватися з вказівки, яка слідує безпосередньо за вказівкою виклику процедури. Використання імені процедури в програмі називається вказівкою процедури або викликом процедури.