Матрице – решени задаци

Након што смо се упознали са матрицама, урадићемо неколико примера који илуструју рад са њима.

  1. Написати програм који одређује збир квадрата свих елемената матрице

#include<stdio.h>
main()
{
int i,j,m,n,a[20][20],z;
printf("unesi dimenzije matrice");scanf("%d%d",&m,&n);
printf("unesi elemente matrice");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
z=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
z=z+a[i][j]*a[i][j]; /* sabiraju se kvadrati SVIH elemenata matrice */
printf("zbir kvadrata elemenata matrice = %d",z);
}
  1. Написати програм који сабира позитивне елементе матрице

#include<stdio.h>
main()
{
int i,j,m,n,a[20][20],z;
printf("unesi dimenzije matrice");scanf("%d%d",&m,&n);
printf("unesi elemente matrice");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
z=0; /* postavljamo pocetnu vrednost zbira */
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i][j]>0)z=z+a[i][j]; /* uslovno sabiranje – ako je uslov ispunjen, azurira se zbir */
printf("zbir pozitivnih elemenata matrice = %d",z);
}
  1. Написати програм који у матрици димензија m x n замењује места редовима k и l (замењује СВЕ елементе реда k елементима реда l).

#include<stdio.h>
main()
{
int i,j,m,n,a[20][20],pom,k,l;
printf("unesi dimenzije matrice");scanf("%d%d",&m,&n);
printf("unesi elemente matrice");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("unesi k i l");scanf("%d%d",&k,&l);
for(j=0;j<n;j++) /* kada radimo sa redovima (vrstama) potreban nam je ciklus sa brojacem j koji prolazi kroz ceo red! u tom ciklusu se menjaju mesta elementima iste kolone (j) ali u redovima k i l, sto znaci da je drugi indeks jednak trenutnom brojacu ciklusa (j), a prvi indeks je kod jedne promenljive jednak k, a kod druge l. */
{
pom=a[k][j];
a[k][j]=a[l][j];
a[l][j]=pom;
}
printf("novodobijena matrica\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%d\t",a[i][j]);
printf("\n");
}
}
  1. Написати програм који у матрици димензија m x n колону p формира као разлику елемената колона k и l.

#include<stdio.h>
main()
{
int i,j,m,n,a[20][20],p,k,l;
printf("unesi dimenzije matrice");scanf("%d%d",&m,&n);
printf("unesi elemente matrice");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("unesi p, k i l");scanf("%d%d%d",&p,&k,&l);
for(i=0;i<m;i++) /* kada radimo sa kolonama potreban nam je ciklus sa brojacem i koji prolazi kroz celu kolonu! u tom ciklusu se elementi kolone p odredjuju kao razlika elemenata kolona k i l. Prvi indeks (i) je isti, a drugi indeks je kod elementa koji formiramo p, kod umanjenika k, a kod umanjioca l */
a[i][p]=a[i][k]-a[i][l];
printf("novodobijena matrica\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%d\t",a[i][j]);
printf("\n");
}
}
  1. Написати програм за уређивање редова матрице са целобројним елементима по нерастућем редоследу елемената. (елементи сваког реда су сортирани од највећег до најмањег!)

#include<stdio.h>
main()
{
int i,j,m,n,a[20][20],p,k;
printf("unesi dimenzije matrice");scanf("%d%d",&m,&n);
printf("unesi elemente matrice");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++)  /* sortiramo red sa indeksom i! unutar ovog ciklusa potreban nam je neki od algoritama za sortiranje. U ovom zadatku koriscen je osnovni algoritam metode izbora. Dakle, imamo dva ciklusa cije su granice vezane za broj kolona (n). Posto je brojac i rezervisan za prolaske kroz redove, uvodimo novi brojac - k. Princip sortiranja je potpuno isti kao kod nizova, samo sto MORAMO pisati i drugu dimenziju, u ovom slucaju indeks reda i, koja je u procesu zamene nepromenljiva, a menjaju se indeksi kolona j i k! Na isti nacin se radi sortiranje po kolonama, samo sto je tad spoljasnji ciklus po brojacu j, a unutrasnji ciklusi, u kojima se vrsi sortiranje, imaju granice vezane za broj vrsta (m). Prilikom zamene drugi indeks (j) je nepromenljiv, a menjaju se indeksi redova (i, k) */
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
if (a[i][j]>a[i][k])
{
p=a[i][j];
a[i][j]=a[i][k];
a[i][k]=p;}
printf("novodobijena matrica\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%d\t",a[i][j]);
printf("\n");
}
}
Advertisements

One thought on “Матрице – решени задаци

  1. Повратни пинг: Вишедимензиони низови (матрице) – Рачунари и програмирање

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

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

WordPress.com лого

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

Google+ photo

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

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

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

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

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

w

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