Решена задача за двумерен масив - определяне място на елемент спрямо диагонал
Двумерен масив често се нарича таблица или матрица.
Ако броят на редовете е равен на броя колони то тази матрица се нарича квадратна.
Структурата от данни, позволяваща ни да работим с матрица е двумерен масив.
Дали елемент от матрица принадлежи на главния диагонал се определя от равенството на индексите му за ред и колона.
Нека разгледаме следната решена задача за диагонал в двумерен масив:
Имате естествено число N от интервала [3..9], както и двумерен масив с размери N*N. Числата в този масив са естествени от интервала [11..99].
Да се състави програма, чрез която се въвеждат стойности в този масив и след това се обработват по следния начин:
а) всички елементи над главния диагонал да станат четни, ако е необходимо се изважда 1;
б) всички елементи под главния диагонал да станат нечетни, ако е необходимо се изважда 1;
в) при всяка промяна на тези числа, елементът от главния диагонал в същия ред нараства с 1.
Следващата примерна програма дава решена задача за двумерен масив:
#include <iostream>
using namespace std;
const int broi=5;//N broj redowe=broj koloni
int main ()
{ int mas[broi][broi];//dwumeren masiw
int i,j;
cout<<"Imate estestweno chislo N ot interwala [3..9], kakto i kwadratna\n";
cout<<"matrica s razmeri N*N. Tablicata sydyrva estestweni chsila ot\n";
cout<<"interwala [11..99]. Da se systawi programa, chrez koqto se wywevdat\n";
cout<<"stojnosti w kwadratnata matrica. Nezawisimo kakwi chisla sa wywedeni\n";
cout<<"programata da promeni chislata nad glawniq diagonal na chetni, a pod\n";
cout<<"glawniq diagonal na nechetni kato wadi ot tqh 1. Pri wsqka promqna na\n";
cout<<"tezi chisla, elementyt ot glawniq diagonal w syshiq red da narastwa s 1.\n";
//Nachalna inicializaciq na masiw
for (i=0;i<broi;i++)
{for (j=0;j<broi;j++) {mas[i][j]=(i+1)*10+j+1;}//for j
} //for i
cout<<"Izwevdam sydyrvanieto na masiw \n";
for (i=0;i<broi;i++)
{for (j=0;j<broi;j++) {cout<<mas[i][j]<<"; "; }// izwevda element ot masiw for j
cout<<endl;
}//for i
cout<<"Wsichki elementi nad glawniq diagonal stawat chetni:\n";
for (i=0;i<broi;i++)
{for (j=i+1;j<broi;j++)
{if (mas[i][j]%2) {mas[i][j]--;mas[i][i]++;}}// glawniq diagonal mas[i][i]++ for j
}//for i
cout<<"Wsichki elementi pod glawniq diagonal stawat nechetni:\n";
for (i=0;i<broi;i++)
{for (j=0;j<i;j++)
{if (mas[i][j]%2==0) {mas[i][j]--;mas[i][i]++;}}//glawniq diagonal mas[i][i]++ for j
}//for i
cout<<"Izwevdam sydyrvanieto na masiw \n";
for (i=0;i<broi;i++)
{for (j=0;j<broi;j++) {cout<<mas[i][j]<<"; "; }// izwevda element ot masiw for j
cout<<endl;
}//for i
system("pause");
return 0;
}//kraj na programa dwumeren masiw
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.
Начало на страницата