You are on page 1of 6

Uvod u računala i programiranje

Vježba 6.

 Nizovi: jednodimenzionalni, dvodimenzionalni


 Zamjena vrijednosti jednodimenzionalnog niza. Nizovi brojači.
 Određivanje maksimalne i minimalne vrijednosti dvodimenzionalnog niza
 Pretraživanje glavne i sporedne dijagonale matrice

Zadatak 1.

Napisati program koji će tražiti unos niza brojeva, nakon čega će zamijeniti redoslijed elemenata niza,
npr. ako je učitan niz {1,5,4,6,7} novodobiveni niz treba biti {7,6,4,5,1}.

#define MAX 20
int main()
{
int i,n;
int niz[MAX]={0},pomocna;

printf(" \n Unesite broj elemenata niza : ");


scanf("%d",&n);

/*unos elemenata niza*/


for (i=0;i<n;i++)
{
printf(" \n Unesite %d. element niza : ", i+1);
scanf("%d",&niz[i]);
}

/*zamjena pozicija*/
for (i=0;i<n/2;i++)
{
pomocna=niz[i];
niz[i]=niz[n-1-i];
niz[n-1-i]=pomocna;
}

/*ispis novodobivenog niza*/


for (i=0;i<n;i++)
printf("%d ",niz[i]);

return 0;
}
Zadatak 2.

Napisati program koji će učitavati prirodne brojeve u intervalu [10, 99] i brojati koliko puta je učitan
koji broj. Učitavanje prekinuti kad se unese broj izvan zadanog intervala. Nakon učitavanja program
treba ispisati koliko je puta učitan svaki broj iz zadanog intervala koji je učitan barem jednom.

broj

#include <stdio.h>

#define DG 10 /* donja granica intervala */


#define GG 99 /* gornja granica intervala */

int main() {

int broj, i;

/*deklaracija niza brojaca*/


int brojac[GG - DG + 1] = { 0 };

/*unos i brojanje*/
do
{
printf("\nUnesite broj u intervalu [%d, %d]: ", DG, GG);
scanf("%d", &broj);

if (broj >= DG && broj <= GG)


{
brojac[broj - DG]++;
}
}
/*unos prestaje kada se unese vrijednost van intervala*/
while (broj >= DG && broj <= GG);

/*ispis broja pojavljivanja*/


for (i = DG; i <= GG; i++)
{
if (brojac[i - DG] > 0)
{
printf("\nBroj %d se pojavio %d puta",i ,brojac[i - DG]);
}
}
return 0;
}

Zadatak 3.
a)
Napisati program koji će osigurati učitavanje cjelobrojne kvadratne matrice ranga n (n redaka i n
stupaca). Neka maksimalna dimenzija matrice bude definirana simboličkom konstantom MAXRANG,
iznosa 10. Provjeriti da li je učitana vrijednost n unutar dozvoljenog intervala vrijednosti. Ispisati
učitanu matricu.

#include <stdio.h>
#define MAXRANG 10

int main(){

int i,j,n;
int A[MAXRANG][MAXRANG];

/*unos ranga matrice uz provjeru da je dimenzija matrice OK*/


do{
printf("\nUnesite dimenziju matrice:");
scanf("%d",&n);
}
while((n<=0)||(n>MAXRANG));

/*unos elemenata matrice*/


for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("\nMatrica 1, redak:%d stupac:%d ",i+1,j+1);
scanf("%d",&A[i][j]);
}
}

/*formatirani ispis matrice*/


for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d ",A[i][j]);
}
printf("\n");
}

return 0;
}

b)
Proširite prethodni program na način da osigurava ispis najveće i najmanje vrijednosti matrice s
pripadajućim pozicijama tih elemenata.

#include <stdio.h>
#define MAXRANG 15

int main(){

int i,j,n;
int A[MAXRANG][MAXRANG];
int min, max, red_min, stup_min, red_max, stup_max;

/*unos ranga matrice uz provjeru da je dimenzija matrice OK*/


do{
printf("\nUnesite dimenziju matrice:");
scanf("%d",&n);
}
while((n<=0)||(n>MAXRANG));

/*unos elemenata matrice*/


for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("\nMatrica 1, redak:%d stupac:%d ",i+1,j+1);
scanf("%d",&A[i][j]);
}
}

/*maksimalna i minimalna vrijednost matrice*/


min=A[0][0];
max=A[0][0];
red_min=0;
stup_min=0;
red_max=0;
stup_max=0;

for(i=0;i<n;i++){
for(j=0;j<n;j++){
/*minimalni s pozicijom*/
if(A[i][j]<min){
min=A[i][j];
red_min=i;
stup_min=j;
}

/*maksimalni s pozicijom*/
if(A[i][j]>max)
{
max=A[i][j];
red_max=i;
stup_max=j;
}
}
}
/*formatirani ispis matrice*/
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d ",A[i][j]);
}
printf("\n");
}

/*ispis max i min elementa matrice s pozicijama*/


printf("\nNajmanja vrijednost %d nalazi se u %d. retku i %d stupcu \n",min, red_min+1,
stup_min+1);
printf("Najveca vrijednost %d nalazi se u %d. retku i %d stupcu \n",max, red_max+1,
stup_max+1);

return 0;
}

Zadatak 4.

Napisati program koji će učitati cjelobrojnu matricu dimenzija NxN i naći najmanji element na glavnoj
i najmanji na sporednoj dijagonali.

#include <stdio.h>
#define N 3

void main()
{
int i, j;
int mat[N][N], min_gl, min_sp;

/*najprije unesemo elemente matrice*/


printf("\nUnos elemenata matrice :\n");
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
scanf("%d", &mat[i][j]);

/*prije pretrazivanja proglasimo početnu minimalnu vrijednost*/


min_gl = mat[0][0];
/*pretrazimo glavnu dijagonalu*/
for (i = 1; i < N; i++)
{
if (mat[i][i] < min_gl)
{
min_gl = mat[i][i];
}
}

/*prije pretrazivanja proglasimo početnu minimalnu vrijednost*/


min_sp = mat[0][N-1];
/*pretrazimo sporednu dijagonalu*/
for (i = 1; i < N; i++)
{
if (mat[i][N-1-i] < min_sp)
{
min_sp = mat[i][N-1-i];
}
}
/*ispisemo rezultate*/
printf("\nNajmanji element na glavnoj dijagonali je : %d", min_gl);
printf("\nNajmanji element na sporednoj dijagonali je : %d", min_sp);
}

Skraćena varijanta prethodnog primjera, sa samo jednim prolaskom kroz matricu


#include <stdio.h>
#define N 3

int main()
{
int i, j;
int A[N][N], min_gl, min_sp;

/*unosimo i odmah ispitujemo unesene vrijednosti*/


for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("\nUnesite element [%d][%d] : ", i, j);
scanf("%d", &A[i][j]);
/*slijede testovi za inicijalizaciju pocetnih minimalnih vrijednosti*/
if (i == 0 && j == 0)
{
min_gl = A[i][j];
}
if (i == 0 && j == N - 1)
{
min_sp = A[i][j];
}
/*testiramo da li je uneseni element dio glavne dijagonale*/
if (i == j)
{
/*ako jest tada ispitujemo da li je manji od prethodnog minimuma*/
if (A[i][j] < min_gl)
{
min_gl = A[i][j];
}
}
/*testiramo da li je uneseni element dio sporedne dijagonale*/
if (i == N-1 -j)
{
/*ako jest tada ispitujemo da li je manji od prethodnog minimuma*/
if (A[i][j] < min_sp)
{
min_sp = A[i][j];
}
}
}
}

/*ispisemo rezultate*/
printf("\nNajmanji element na glavnoj dijagonali je : %d", min_gl);
printf("\nNajmanji element na sporednoj dijagonali je : %d", min_sp);

return 0;
}

You might also like