Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_1_05_ВНУ.doc
Скачиваний:
2
Добавлен:
08.09.2019
Размер:
1.71 Mб
Скачать

Ввід та вивід значень елементів двомірного масиву Ввід значень елементів двомірного масиву

Задача. Ввести з клавіатури комп’ютера значення елементів двомірного масиву a[m,n], що складається з m стрічок та n стовпчиків.

Під m та n розуміють довільні (але такі, що відомі) цілі числа. Значення самих елементів масиву – довільні дійсні числа. Наприклад, для m=2, n=3 масив а може виглядати так:

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

program VvDvMas;

uses

Crt;

Var a:array[1..10,1..20] of real;

m,n,i,j:integer;

begin

ClrScr;

{Ввiд двомiрного масиву a розмiром m*n}

Writeln('Ввести кiлькiсть стрiчок m<=10');

Writeln(' та кiлькiсть стовпчикiв n<=20');

Readln(m,n);

Writeln('Ввести по стрiчках даний’,

‘ двомiрний масив:');

For i:=1 to m do

Begin

For j:= 1 to n do Read(a[i,j]);

Readln;

End;

{...}

Readln;

end.

Вивід значень елементів двомірного масиву a[m,n]

Задача. У пам’яті комп’ютера записано значення елементів двомірного масиву a[m,n], що складається із m стрічок та n стовпчиків. Вивести на друк (на екран дисплея) цей двомірний масив у вигляді матриці відповідних розмірів.

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

Програма виводу значень елементів двомірного масиву у вигляді таблиці.

program VuDvMas;

uses

Crt;

Type mas=array[1..10,1..20] of real;

Var a:mas;

m,n,i,j:integer;

begin

ClrScr;

Writeln('Ввести кiлькiсть стрiчок m<=10');

Writeln(' та кiлькiсть стовпчикiв n<=20');

Readln(m,n);

{. . .}

{Вивiд на екран дисплея двомiрного масиву}

{у виглядi матрицi}

Writeln('Двомiрний масив a:');

For i:=1 to m do

Begin

For j:= 1 to n do Write(a[i,j]:9:3,' ');

Writeln;

End;

{. . .}

Readln;

end.

Задачі обчислювального характеру з використанням двомірних масивів

Знаходження найменшого (найбільшого) значення

серед елементів двомірного масиву

Задача. У заданому масиві a[m,n] знайти найменше значення, а також номери стрічки та стовпчика, у яких стоїть найменший елемент.

Алгоритм розв’язку задачі полягає в наступному.

Спочатку вводять розмірність масиву і значень самих елементів. Найменший серед елементів масиву позначають ідентифікатором amin, а його індекси – imin та jmin.

На початку змінній amin присвоюється значення елемента a[1,1], відповідно змінним imin та jmin присвоюються значення 1. Інакше кажучи, на початку вважаємо, що елемент a[1,1] є найменшим.

Далі, змінюючи номер стрічки від 1 до m, а номер стовпчика від 1 до n, порівнюють всі елементи масиву зі значенням amin. Якщо серед них знайдеться такий, що його значення менше від amin: a[i,j]<amin, то це значення a[i,j] запам’ятається як нове значення змінної amin, а його індекси i та j запам’ятаються як нові значення змінних imin та jmin.

Вийшовши зі складеного циклу, виводимо на друк знайдені значення шуканих змінних.

Зауваження.

У випадку знаходження найбільшого елемента двомірного масиву діємо аналогічно. Найбільшому серед елементів amax на початку присвоюємо значення елемента a[1,1], а його індексам imax та jmax надаємо значення 1. Далі, в процесі перегляду всіх елементів масиву перевіряємо умову a[i,j]>amax і у випадку її істинності виконуємо такі операції присвоєння: amax:=a[i,j], imax:=i, jmax:=j.

Програма знаходження найменшого елемента двомірного масиву та його індексів.

program MinElDvMas;

uses

Crt;

Var a:array[1..10,1..20] of real;

m,n,i,j,imin,jmin:integer;

amin:real;

Begin

ClrScr;

{Ввiд двомiрного масиву}

Writeln('Ввести кiлькiсть стрiчок m<=10');

Writeln(' та кiлькiсть стовпчикiв n<=20');

Readln(m,n);

Writeln('Ввести по стрiчках даний ',

'двомiрний масив');

For i:=1 to m do

Begin

For j:= 1 to n do Read(a[i,j]);

Readln;

End;

{Пошук найменшого елемента та його iндексiв}

amin:=a[1,1]; imin:=1; jmin:=1;

For i:=1 to m do

For j:=1 to n do

If a[i,j]<amin then

Begin

amin:=a[i,j];

imin:=i;

jmin:=j;

End;

{Друк результатiв}

Writeln('Найменший елемент двомiрного масиву ',

'amin=',amin:9:3);

Writeln('Номер стрiчки найменшого елемента ',

'imin=',imin:3);

Writeln('Номер стовпчика найменшого елемента ',

'jmin=',jmin:3);

Readln;

End.

Обчислення суми (добутку) елементів двомірного масиву a[m,n]

Задача. Дано одномірний масив a[m,n]. Обчислити суму від’ємних елементів цього масиву.

Алгоритм знаходження найменшого елемента масиву та його індексів такий.

Спочатку забезпечують введення розмірності двомірного масиву: m – кількість стрічок, n – кількість стовпчиків і значень всіх його елементів: a[i,j] (i=1, 2,…, m; j=1, 2,…, n).

Змінній S, якою позначається сума від’ємних елементів, на початку присвоюємо значення 0. Далі, змінюючи номер стрічки і від 1 до m та номер стовпчика j від 1 до n, перевіряємо умову, чи є поточний елемент a[i,j] від’ємним: a[i,j]<0. Якщо це так, то його значення додається до суми, і перегляд елементів продовжуємо. Якщо ж умова не є істинною, то на елемент a[i,j] уваги не звертаємо, і просто продовжуємо перегляд.

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

, тоді серед усіх елементів не знайшлося жодного від’ємного;

, тоді на друк виводиться значення S.

Зауваження.

Обчислення добутку елементів здійснюється аналогічно. Позначається добуток символом наприклад, означає добуток всіх елементів з першого по n-ий. У випадку обчислення добутку початкове його значення приймається рівним одиниці: d=1. Кожне наступне (нове) значення добутку обчислюється як добуток його попереднього значення на значення поточного елемента: .

Програма обчислення суми від’ємних елементів двомірного массиву.

program SumVidElDvMas;

uses

Crt;

Type mas=array[1..10,1..20] of real;

Var a:mas;

m,n,i,j:integer;

s:real;

Begin

ClrScr;

{Ввiд двомiрного масиву}

Writeln('Ввести кiлькiсть стрiчок m<=10');

Writeln(' та кiлькiсть стовпчикiв n<=20');

Readln(m,n);

Writeln('Ввести по стрiчках даний ',

'двомiрний масив');

For i:=1 to m do

Begin

For j:= 1 to n do Read(a[i,j]);

Readln;

End;

{Обчислення суми вiд''ємних елементiв}

For i:=1 to m do

For j:=1 to n do

If a[i,j]<0 then s:=s+a[i,j];

{Друк результатiв обчислень}

If s=0

then Writeln('Вiд"ємних елементiв немає')

else Writeln('Сума вiд"ємних елементiв ',

's=',s:9:3);

Readln;

End.

Обчислення суми елементів кожної стрічки та кожного стовпчика

двомірного масиву

Задача. Дано двомірний масив a[m,n]. Обчислити суму b[j], (j=1, 2,…, n) елементів кожного стовпчика та суму c[i], (i=1, 2,…, m) кожної стрічки даного масиву. Перевірити рівність .

Алгоритму обчислення сум елементів кожної стрічки та кожного стовпчика двомірного масиву наступний.

Вводять розмірність двомірного масиву: m – кількість стрічок, n – кількість стовпчиків і значення всіх його елементів: a[i,j] (i=1, 2,…, m; j=1, 2,…, n).

Здійснюють обчислення сум c[i], (i=1, 2,…, m) елементів кожної стрічки та вивід їх на друк.

Обчислюють суми b[j], (j=1, 2,…, n) ) елементів кожного стовпчика та вивід їх на друк.

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

Програма обчислення сум елементів кожної стрічки та кожного стовпчика двомірного масиву.

program SumElStRdDvMas;

uses

Crt;

Var a:array[1..10,1..20] of real;

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

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

s1,s2:real;

m,n,i,j:integer;

Begin

ClrScr;

{Ввiд заданого двомiрного масиву}

Writeln('Ввести кiлькiсть стрiчок m<=10');

Writeln('та стовпчикiв n<=20');

Readln(m,n);

Writeln('Ввести масив а по стрiчках');

For i:=1 to m do

Begin

For j:= 1 to n do Read(a[i,j]);

Readln;

End;

{Обчислення та друк суми елементiв}

{кожної стрiчки}

Writeln('Суми елементiв кожної стрiчки:');

For i:=1 to m do

Begin

c[i]:=0;

For j:=1 to n do c[i]:=c[i]+a[i,j];

Write(c[i]:9:2,' ');

end;

Writeln;

{Обчислення та друк суми елементiв}

{кожного стовпчика}

Writeln('Суми елементiв кожного стовпчика:');

For j:=1 to n do

Begin

b[j]:=0;

For i:=1 to m do b[j]:=b[j]+a[i,j];

Write(b[j]:9:2,' ');

End;

Writeln;

{Перевiрка правильностi обчислень}

s1:=0;

For i:=1 to m do s1:=s1+c[i];

s2:=0;

For j:=1 to n do s2:=s2+b[j];

If s1=s2

then

Writeln('s1=',s1:9:2,'s2=',s2:9:2,

' рiвнiсть правильна')

else

Write('s1=',s1:9:2,'s2=',s2:9:2,

' рiвнiсть не правильна');

Readln;

End.