You are on page 1of 4

Uvod u računala i programiranje

Vježba 7.

 Nizovi: dvodimenzionalni
 Zamjene vrijednosti u dvodimenzionalnom niza. Nizovi brojači.
 Selektivno pretraživanje:
- Pretraživanje glavne i sporedne dijagonale matrice
- Pretraživanje određenog stupca i retka

Zadatak 1.

Zamjeni elemente glavne i sporedne dijagonale kvadratne matrice ranga N. (Definirati N kao
simboličku konstantu.)

#include<stdio.h>
#define N 3

int main() {
/*deklaracija*/
int mat[N][N];
int i, j, pomocna;

/*inicijalizacija*/
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
scanf_s("%d", &mat[i][j]);
}
}

/*ispis matrice prije zamjene*/


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

/* zamjena glavne i sporedne dijagonale


--> indeksi glavne dijagonale: i==j
--> indeksi sporedne dijagonale: i+j==N-1 */
for (i = 0; i < N; i++) {
pomocna = mat[i][i];
mat[i][j] = mat[i][N - 1 - i];
mat[i][N - 1 - i] = pomocna;
}

//ispis rezultata
printf("Rezultat zamjene vrijednosti na dijagonalama:\n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", mat[i][j]);
printf("\n");
}

return 0;
}
Zadatak 2.
Zamjeni stupce matrice dimenzija MxN. Korisnik definira stupce stup1 i stup2 koje želi
zamijeniti. (Dimenzije matrice M i N definirati kao simboličke konstante.)

#include<stdio.h>
#define M 2
#define N 4

int main() {
/*deklaracija*/
int mat[M][N];
int i, j, pom, stup1, stup2;

/*inicijalizacija*/
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
scanf_s("%d", &mat[i][j]);
}
}

/*ispis matrice prije zamjene*/


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

printf("Odredi 2 stupca koja želiš zamjeniti: \n");


scanf_s("%d %d", &stup1, &stup2);

/*zamjena*/
for (i = 0; i < M; i++) {
pom = mat[i][stup1 - 1];
mat[i][stup1 - 1] = mat[i][stup2 - 1];
mat[i][stup2 - 1] = pom;
}

//ispis rezultata
printf("Rezultat zamjene:\n");
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++)
printf("%d ", mat[i][j]);
printf("\n");
}

return 0;
}
Zadatak 3.
Izračunaj sume stupaca matrice dimenzija MxN. Ispisati najmanju sumu i pripadni indeks
stupca. Zatim ispiši cijeli stupac matrice čija je suma najmanja. (Dimenzije matrice M i N
definirati kao simboličke konstante.)
#include<stdio.h>
#define M 2
#define N 4

int main() {

int mat[M][N] = { {2, 5, 3, 6},


{1, 4, 5, 4} };

int suma_stup[N] = { 0 };
int ind_stup_min_sum = 0; //indeks stupca cija suma elemenata je najmanja
int i, j, min_sum;

//izracun sume stupaca


for (j = 0; j < N; j++)
for (i = 0; i < M; i++)
suma_stup[j] = suma_stup[j] + mat[i][j];

//trazenje minimalne sume


min_sum = suma_stup[0];
for (i = 1; i < N; i++)
if (suma_stup[i] < min_sum){
min_sum = suma_stup[i];
ind_stup_min_sum = i;
}

//ispis odgovarajuceg stupca


printf("Stupac cija suma elemenata je najmanja je %d. stupac.\n", ind_stup_min_sum + 1);
printf("Vrijednosti elemenata su: \n");
for (i = 0; i < M; i++)
printf("%d\n", mat[i][ind_stup_min_sum]);

return 0;
}

Zadatak 4.
Prikazati histogramom vrijednosti zadane matricom na Slici 1.
(Definirati dvodimenzinalnu matricu i inicijalizirati je putem inicijalizacijske liste, prema
vrijednostima na slici. Definirati odgovarajući brojač koji broji koliko puta se pojavljuje svaka
vrijednost. Ispisati rezultat brojača histogramom. Rješenje je dano na Slici 2.)

10 20 10 20

30 40 30 40

10 10 10 10

10 20 30 40
10 * * * * * * *
20 * * *
30 * * *
40 * * *
Press any key to continue . . .
Slika 2.

#include <stdio.h>

int main(){
int A[4][4] = { {10, 20, 10, 20},
{30, 40, 30, 40},
{10, 10, 10, 10},
{10, 20, 30, 40} };

int brojac[4] = { 0 }; //dimenzija specificna (prilagodjen skupu vrijednosti 10, 20, 30 i 40)
int i, j, k;

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


for (j = 0; j < 4; j++)
brojac[A[i][j] / 10 - 1]++;

for (i = 0; i < 4; i++) {


printf("%3d ", (i + 1) * 10);
for (k = 1; k <= brojac[i]; k++)
printf("*");

printf("\n");
}

return 0;
}

You might also like