“ема: Ѕагатовим≥рн≥ масиви.

ћета: навчитис¤ вводити та виводити на екран двовим≥рн≥ масиви у вигл¤д≥ таблиц≥, обчислювати суми, добутки вибраних елемент≥в двовим≥рного масиву, переставл¤ти м≥сц¤ми частини масиву.

’≥д роботи:

ѕо¤сненн¤

ƒвовим≥рн≥ масиви.

ƒвовим≥рний масив - це масив, де кожному елементу ставитьс¤ у в≥дпов≥дн≥сть два ≥ндекси.

ƒл¤ початку роботи з масивом готуЇмо м≥сце в пам'¤т≥ у вигл¤д≥ пр¤мокутника, що маЇ задану к≥льк≥сть р¤дк≥в ≥ стовпчик≥в. ƒл¤ цього описуЇмо його в розд≥л≥ оголошень, використовуючи зарезервоване слово јrray, п≥сл¤ ¤кого в квадратних дужках вказуЇмо розм≥рн≥сть масиву, причому враховуЇмо, що на першому м≥сц≥ вказуютьс¤ ≥ндекси р¤дк≥в, а на другому - стовпчик≥в, ≥ обов'¤зково тип елемент≥в.
ќпис двовим≥рного масиву
<≤м'¤_масиву> : array[<поч_≥нд_р¤дк≥в>..<к≥н_≥нд_р¤дк≥в>,
<поч_≥нд_стовп>. .<к≥н_≥нд_стовп>]
of <базовий_тип_елемент≥в> ;

ѕриклад опису:

Var A:array[1..8,1..3] of real; 
D:array[1..10,1.100] of integer; 

«верн≥ть увагу на те, що значень у р¤дках або стовпчиках масиву не обов'¤зково буде ст≥льки, ск≥льки ми оголосили, але не б≥льше.
«вертанн¤ до елементу двовим≥рного масиву:
≤м'¤_масиву[<≥ндекс_р¤дка>, <≥нд_стовпчика>]

 

≈лементи двовим≥рного масиву (дан≥ можуть бути подан≥ у вигл¤д≥ таблиц≥) визначаютьс¤ ≥менем масиву та двома ≥ндексами: перший ≥ндекс означаЇ номер р¤дка, а другий Ч номер стовпц¤,†† на перетин≥ ¤ких стоњть елемент, наприклад р[1,2], –озгл¤немо приклади оголошенн¤ масиву-константи bal, що маЇ 2 р¤дки ≥ 4 стовпц≥ елемент≥в, де¤кого масиву doba, ¤кий м≥ститиме 24* 60 елемент≥в ц≥лого типу, двовим≥рного масиву р розм≥ру 9 на 9 (тут буде 9* 9=81 елемент).

const bal: array [1..2,1..4] of integer=((4,3,5,3),(4,4,5,3));

var doba: array [0..23] of array [0..59] of integer;

p : array [l..9, l..9] of integer;

 

“ут bal[l,l]=4, bal[l,2]=3, .... bal[2,3]=5, bal[2,4]=3. «наченн¤ елементам масив≥в doba ≥ р можна надати командою присвоЇнн¤ двома способами,наприклад, так: doba[16,30]:=5.


«аповненн¤ масиву:

for ≥:=1 to n do
for j:=1 to m do 
begin 
write ('введ≥ть ј[',i,',',j,']: '); 
readln (ј[i,j]); 
end; 
for ≥:=1 to n do
for j:=1 to m do 
ј[≥,j]:=i*i-10 {або будь-¤ка формула}; 
for ≥:=1 to n do
for j:=1 to m do 
ј[≥,j]:=random(L-K)+K; 

¬иведенн¤ двовим≥рного масиву на екран

for ≥:=1 to n do
begin 
for j:=1 to m do 
write(A[i,j]:8); {виведенн¤ в р¤док} 
writeln; {перех≥д на новий р¤док} 
end; 

¬иведенн¤ в р¤дку необх≥дно обов'¤зково форматувати, щоб не трапилось "злипанн¤" елемент≥в (дивись приклад вище).
як було зазначено вище, дл¤ роботи з масивом потр≥бен будь-¤кий оператор повторенн¤. ¬очевидь, що у двовим≥рному масив≥ необх≥дно використовувати њх два: один цикл, внутр≥шн≥й, потр≥бен дл¤ переходу м≥ж елементами р¤дка (тобто, по стовпчиках), а другий, зовн≥шн≥й, - дл¤ перем≥щенн¤ м≥ж р¤дками.
якщо в матриц≥ к≥льк≥сть р¤дк≥в ≥ стовпчик≥в однакова, то таку матрицю називають квадратною (на в≥дм≥ну в≥д звичайноњ пр¤мокутноњ таблиц≥). “≥льки в квадратних матриц¤х ≥снують головна та б≥чна д≥агонал≥.

≈лементи, що сто¤ть на головн≥й д≥агонал≥, мають ≥ндекси (1, 1), (2, 2), (3, 3), ... (≥, ≥). ..., (n, n), тобто номер р¤дка дор≥внюЇ номеру стовпчика! ≈лементи, що сто¤ть на б≥чн≥й д≥агонал≥, мають так≥ ≥ндекси (1, n), (2, n-1), (3, n-2), ..., (≥, n+1-≥), (n,1), тобто ≥ндекси елемент≥в взаЇмозалежн≥ за формулою j= n+1 - i.

 

«адача. —класти програму дл¤ занесенн¤ в двовим≥рний масив р таблиц≥ множенн¤ двох чисел ≥ виведенн¤ масиву на екран.

program Pifagor;

uses Crt;

var p : array [l..9, l..9] of integer;

i, j : integer;

begin

clrscr;

for ≥ := 1 to 9 do

begin

for j := 1 to 9 do

begin

p[i, j] := ≥ * j;
write(p[i, j]
: 6)
end;
writeln {«верн≥ть увагу на команди виведенн¤ масиву}
end;†††††††††††††††††††† {у вигл¤д≥ таблиц≥}

readln

end.

«адача.  ондитерська фабрика дл¤ виготовленн¤ п'¤ти сорт≥в цукерок використовуЇ п'¤ть вид≥в сировини. Ќехай норми затрат aij кожного виду сировини на виробництво 1т цукерок сорту задан≥ формулою aij=i*100+j*i. ¬ивести на екран таблицю затрат сировини (тобто масив а).¬изначити дл¤ ¤кого сорту цукерок (imin) потр≥бно найменше сировини (min) третього виду.

program Fabryka;

uses Crt;

var a :array [1..5,1..5] of real;

i,j,imin: integer; min: real;

begin

clrscr;

writeln('†††††††††††††††††††††††††††††††† ¬ид сировини');

writeln('1††††††††††††††††††† 2†††††††††††††††††† 3†††††††††† 4†††††††† 5');

for i:=l to 5 do†††††††††††††† {”творимо таблицю затрат)

begin

write(i,' сорт'); for j:=l to 5 do

begin

a[i,j]:= i*100+j*i;

write(a[i,j]:7:2);††† {–оздрукуЇмо елементи ≥-го р¤дка)

end;

writeln††††††††††††††††††††††††††† {ѕерейдемо на новий р¤док)

end;

imin:=l; {ѕрипустимо, що найменше сировини третього)

min:=a[l;3]; {виду потр≥бно дл¤ цукерок першого сорту)

for ≥: =2 to 5 do

if a[i,3]<min then

begin†††††††††††††† {¬изначимо шуканий сорт цукерок)

min:=a[i,3]; imin:=i

end;

writelnf Ќайменше сировини третього виду ');

writeln('потр≥бно дл¤ цукерок ',imin,' сорту');

readln

end.

 

≤. ¬≥дпов≥сти на питанн¤:

  1. як оголошуЇтьс¤ багатовим≥рний масив?
  2. —к≥льки цикл≥в використовують дл¤ введенн¤-виведенн¤ двовим≥рного масиву? ќписати ц≥ цикли.
  3. як ≥ндексуютьс¤ елементи багатовим≥рних масив≥в?
  4. як визначити ≥ндекси елемент≥в головноњ д≥агонал≥?
  5. як визначити ≥ндекси елемент≥в поб≥чноњ д≥агонал≥?

≤≤. ¬иконати завданн¤:

1. «адана таблиц¤:

2

-3

0

12

15

10

1

1

6

-6

3

18

”вести елементи ц≥Їњ таблиц≥ ≥ роздрукувати њњ на екран≥. ¬веденн¤ елемент≥в виконати такими способами (в р≥зних програмах):

 

2. «адана матриц¤ 10х10 з випадковими(в≥д 0 до 100) ц≥лими елементами. –оздрукувати цю таблицю. ќбчислити суму елемент≥в заштрихованоњ частини. ≈лементи д≥агоналей також потр≥бно включати в суму. ¬иконати св≥й вар≥ант:

5. «адана матриц¤ 10х10 з випадковими(в≥д 0 до 100) ц≥лими елементами. –оздрукувати цю таблицю. ѕом≥н¤ти м≥сц¤ми частини матриц≥ зг≥дно вар≥анту. «нову роздрукувати таблицю.

 

 

 

 

 

 

 


6. ” масив≥ розм≥рн≥стю 10 х 12 у кожному р¤дку м≥ститьс¤ зароб≥тна плата прац≥вника за в≥дпов≥дний м≥с¤ць. —клад≥ть програму, ¤ка:

а) п≥драховуЇ сумарний зароб≥ток кожного прац≥вника прот¤гом року;

б) знаходить найменшу ≥ найб≥льшу м≥с¤чну зароб≥тну плату по м≥с¤ц¤х ≥ прац≥вниках (надрукувати номер прац≥вника ≥ номер м≥с¤ц¤). ћасив заповнити випадковими числами в≥д 7000 до 15000.

 

 

Хостинг от uCoz