Матрице

Низ чији су елементи низови простих података може да се прикаже у две димензије и зове се дводимензиони низ (матрица). Другим речима, матрице представљају низ низова. Сви елементи матрице морају да буду истог типа. Матрица Anxm је дводимензиони низ. Матрица је у суштини табела која се састоји од редова (хоризонталне групе елемената) и колона (вертикалне групе елемената). У пресеку колоне c и реда r налази се елеменат са индексима r и c.

За означавање елемената матрице потребна су два индекса aij. Само један индекс (ai) означава један подниз матрице. Елементи подниза ai чине i-ту врсту матрице. Елементи матрице који имају исти други индекс чине колону. Не постоји једна заједничка ознака за целу колону матрице.

дефинисање матрице:

 тип име[дужина][дужина];

тип – тип елемената матрице
дужина (у првој загради) – број врста
дужина (у другој загради) – број колона

нпр:

tip ime[r][c]

где tip означава тип елемената дводимензионог низа, ime – име променљиве, r – број редова и c – број колона.

Индекси елемената дводимензионог низа се крећу од 0 до r-1 (за редове) и од 0 до c-1 (за колоне). Приступ елементима дводимензионог низа је преко имена низа и индекса одговарајућег реда и колоне (a[1][3], a[0][1]…)

елементи матрице са одговарајућим индексима:

A[0][0]  A[0][1]  A[0][2]  A[0][3]
A[1][0]  A[1][1]  A[1][2]  A[1][3]
A[2][0]  A[2][1]  A[2][2]  A[2][3]
A[3][0]  A[3][1]  A[3][2]  A[3][3]
A[4][0]  A[4][1]  A[4][2]  A[4][3]

Сваком елементу се приступа на основу два податка: редни број реда у коме се налази и редног броја колоне у којој се налази. Због тога се за рад са матрицом користе два (угњеждена) циклуса:

  • први (спољашњи) – обично има бројач i, и повезује се са димензијом m, представља бројање по редовима

  • други (унутрашњи) – обично има бројач j, и повезује се са димензијом n, представља бројање по колонама

Као и код низова, најпре имамо циклусе за уношење елемената матрице, након тога циклусе у којима се врши задата операција, а након тога (ако је потребно) циклусе за приказивање матрице на екрану.

дефинисање типа матрице:

typedef тип име[дужина][дужина];

тип – тип елемената
име – име новодефинисаног типа (нпр. matrica)

нпр.

typedef double Niz[10];
 Niz p,q[3]; /* p je niz od 10 elemenata tipa double */
 p[7]=q[0][9]; /* q je niz od 3 elementa tipa Niz => q je matrica od 3 vrste i 10 kolona */

обилазак по врстама:

обилазак матрице по врстама

for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
.
.
.
}

обилазак по колонама:

обилазак матрице по колонама

for(j=0;j<n;j++)
for(i=0;i<m;i++)
{
.
.
.
}

пример: Написати програм у који уносимо матрицу димензија mxn, а након тога исписати унету матрицу.

#include<stdio.h>
main()
{
int i,j,m,n,a[20][20]; /* brojaci i i j, dimenzije m - broj redova, n - broj kolona, matrica a sa maksimalno 20 redova i 20 kolona */
printf("unesi dimenzije matrice");scanf("%d%d",&m,&n);
printf("unesi elemente matrice");
/* ciklusi za unosenje elemenata matrice, unosimo red po red */
for(i=0;i<m;i++)
{
printf("%d. vrsta:",i+1);
for(j=0;j<n;j++) scanf("%d",&a[i][j]);
}
/* prikazivanje elemenata matrice */
printf("uneta matrica:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++) printf("%5d",a[i][j]); /* za svaki elemenat rezervisemo 5 mesta na ekranu - konverzija %5d. Slican efekat se moze dobiti koristenjem obicne konverzije %d a zatim koristenjem tabulatora \t */
printf("\n"); /* nakon odstampanog jednog reda matrice (elementi razdvojeni odredjenim brojem razmaka) prelazimo u novi red, da bismo stampali sledeci red matrice */
}
}

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s