упражнение
№10
Ддвумерни
масиви
Двумерният масив има два индекса. Първият е за номера на реда, вторият е за номера на колоната. Пример за двумерен масив е матрицата. Достъпът до елементите на двумерния масив се осъществява чрез името на масива и двата индекса на масива: за номера на реда и за номера на колоната. Индексите се заграждат в квадратни скоби. Например, ако матрицата има вида:

то A[0][0]
е елемента,
разположен
на първи ред
и първи стълб
със стойност
21.
Означението
A[I][J] се нарича
индексирана
променлива.
Тя може да
участва във
всички операции,
допустими за
типа на
елементите
на двумерния
масив.

Зад.1 Даден
е двумерен
масив от
реални числа.
Да се въведат
стойности за
елементите
на масива и
да се намери
сумата от всички
елементи на
масива.
Решение
Ще ограничим броя на редовете, както и броя на колоните до 10. Това ще бъде стойността на константата MAXIND. За решаването на задачата е необходимо да се дефинират следните променливи:
a - за
масива, чиито
елементи са
реални числа;
Sum - за
натрупване
на сумата от
елементите
на масива;
i - индексна
променлива,
която ще
съдържа
номера на
текущия ред;
j - индексна
променлива,
която ще
съдържа номера
на текущата
колона;
n - за
броя на
редовете;
m - за
броя на
колоните.
Решението на
задачата
включва 5
стъпки:
1)
въвеждане
на броя на
редовете ;
2)
въвеждане
на броя на
колоните ;
3)
въвеждане
на
елементите
на масива;
4)
намиране
на сумата от
всички
елементи на масива;
5)
извеждане
на
получената
сума.
Стъпка
3 изисква
използването
на цикъл за
обхождане на
редовете на
масива (фиг.1).
Използва се
цикъл с
управляваща
променлива i, която
следи номера
на реда. При
всяко изпълнение
на цикъла се
въвежда по
един ред от масива.

Тъй
като всеки
ред на масива
от своя
страна представлява
едномерен
масив, то неговото
въвеждане
също изисква
цикъл. Следователно
тялото на
цикъла с
управляваща променлива
i
представлява
отново цикъл.
Този цикъл се
нарича
вътрешен и е
с
управляваща
променлива j, която
следи номера
на колоната
във всеки ред
(фиг.2).
Цикли,
организирани
по този
начин, се
наричат вложени.
В
стъпка 4
трябва да
организираме два
нови вложени
цикъла, по
подобие на тези
в стъпка 3, но в
тялото на
вътрешния
цикъл вместо
въвеждане се
извършва
натрупване
на сумата.
Пълната
блокова
схема,
илюстрираща
алгоритъма
за
решаването
на тази
задача, има
вида показан
на фиг. 3, а
програмата,
написана на C++,
е показана
по-долу.
Ò
#include <iostream.h>
#define MAXIND 100
void main(void)
{
float
Sum,a[MAXIND][ MAXIND];
int i,j,m,n;
do{
cout<<”Въведете броя
на редовете n (1<=n<=100). n=”;
cin>>n;
}while (n<1 || n>
MAXIND);
do{
cout<<”Въведете
броя на
колоните m (1<=m<=100). m=”;
cin>>m;
}while (m<1 || m>
MAXIND);
cout<<”Въведете
стойности за
елементите
на масива\n”;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
cout<<”a[”<<i<<”][“<<j<<”]=”;
cin>>a[i][j];
}
for(Sum=0,i=0;i<n;i++)
for(j=0;j<m;j++)
Sum+=a[i][j];
cout<<”Sum=”<<Sum<<”\n”;
}

Зад.2 Дадени
са две
целочислени
матрици А и B с N реда и M
колони (N, M£10). Да
се намери и
изведе на
екрана
матрицата С, за
която е
изпълнено С=А+В.
Зад.3 Дадена
е матрица А с
реални числа,
с N реда и N колони
(N£10). Да
се намери и
изведе на
екрана
сумата от всички
елементи на
главния
диагонал на
матрицата.
Зад.4 Дадена
е матрица А с реални
числа, с N
реда и M
колони (N, M£10).Да
се генерира
масив В,
който
съдържа
сумите на
елементите
на матрицата А по
редове.
Зад.5 Дадена
е матрица А с реални
числа, с N
реда и M
колони (N, M£10). Да
се разменят
местата на
елементите
от първия и
последния ред
на матрицата,
разположени
в една и съща
колона.
![]()
ЗАДАЧИ
ЗА
САМОСТОЯТЕЛНА
РАБОТА
Œ Даден
е двумерен
масив А
с реални
числа, с N
реда и M
колони (N, M£10). Да
се въведат
стойности за
елементите
на масива и
да се намери:
a)
елементът
с най-голяма
стойност и
неговите
индекси;
b)
сумата
от
положителните
елементи на
масива;
c)
средноаритметичната
стойност на всички
нечетни
елементи на
масива.
Сумата
от индексите
на
елементите
на второстепенния
диагонал е
константа
равна на N+1.
Следователно,
индексът на
колоните J маже да
се изрази
чрез индекса
на редовете I по
следният
начин: J=N+1-I.
Дадена
е матрица А с реални
числа, с N
реда и M
колони (N, M£10). Да
се генерира
масив В,
който
съдържа
сумите от елементите
на матрицата
А по колони.
‘ Дадена
е матрица А с реални
числа, с N
реда и M
колони (N, M£10). Да
се генерира
масив В,
който
съдържа
максималните
елементи на матрицата
А по редове.
’ Дадена
е матрица А с N
реда и M
колони (N, M£10). Да
се разменят
местата на
съответните
елементи от
първия и
втория ред на
масива.
“ Дадена
е матрица А, с N реда и M
колони (N, M£10). Да
се разменят
местата на
съответните
елементи от
първата и
последната
колона на масива.
” Дадени са
матриците А с N
реда и M колони
и B с M реда и L колони (N,M,L£10). Елементите
на матриците
са реални
числа. Да се
намери
произведението
на двете
матрици.