упражнение №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{ 

Rounded Rectangular Callout: Стъпка 1     cout<<”Въведете броя на редовете n (1<=n<=100). n=; 

     cin>>n;

  }while (n<1 || n> MAXIND);

 

  do{ 

Rounded Rectangular Callout: Стъпка 2     cout<<”Въведете броя на колоните m (1<=m<=100). m=; 

     cin>>m;

  }while (m<1 || m> MAXIND);

 

Rounded Rectangular Callout: Стъпка 3  cout<<”Въведете стойности за елементите на масива\n”;

  for(i=0;i<n;i++)

    for(j=0;j<m;j++)

     {

       cout<<”a[”<<i<<”][“<<j<<”]=”; 

       cin>>a[i][j];

     }

 

Rounded Rectangular Callout: Стъпка 4  for(Sum=0,i=0;i<n;i++)

    for(j=0;j<m;j++)

       Sum+=a[i][j];

Rounded Rectangular Callout: Стъпка 5 

  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 реда и N колони (N£10). Да се намери и изведе на екрана сумата от елементите, намиращи се над главния диагонал на матрицата.

Ž        Дадена е матрица А с реални числа, с N реда и N колони (N£10). Да се намери и изведе на екрана сумата от елементите, намиращи се на второстепенния диагонал на матрицата.

Сумата от индексите на елементите на второстепенния диагонал е константа равна на N+1. Следователно, индексът на колоните J маже да се изрази чрез индекса на редовете I по следният начин:  J=N+1-I.

       Дадена е матрица А с реални числа с N реда и N колони (N£10). Да се намери и изведе на екрана стойността и индексите на най-големия от елементите, намиращи се на главния диагонал на матрицата.

 

       Дадена е матрица А с реални числа, с 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). Елементите на матриците са реални числа. Да се намери произведението на двете матрици.

 

          à      Ç