#define _CRT_SECURE_NO_WARNINGS_ #include void ispisi_matricu(int mat[10][10], int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%d\t", mat[i][j]); } printf("\n"); } } void ispisi_niz(int niz[], int n) { for (int i = 0; i < n; i++) { printf("%d\t", niz[i]); } printf("\n"); } /*122.Дата је матрица целих бројева. Написати функцију која рачуна суму елемената задатог реда матрице.*/ int nadji_sumu_reda(int mat[10][10], int n, int red) { int suma = 0; for (int i = 0; i < n; i++) { suma += mat[red][i]; } return suma; } /*124. isto za kolonu*/ int nadji_sumu_kolone(int mat[10][10], int n, int kolona) { int suma = 0; for (int i = 0; i < n; i++) { suma += mat[i][kolona]; } return suma; } //а) Имплементирати потпрограм je_rastuci који проверава да ли је задати ред матрице растући. int je_rastuci(int mat[10][10], int n, int red) { for (int i = 1; i < n; i++) { if (mat[red][i - 1] >= mat[red][i]) { return 0; } } return 1; } //б) Имплементирати потпрограм ima_podniz_neparnih који проверава да ли у низу целих //бројева постоји подниз непарних бројева чија је дужина већа од 2. int ima_podniz_neparnih(int niz[], int n) { // ima podniz neparnih minimalne duzine 2 for (int i = 0; i < n - 1; i++) { if (niz[i] % 2 == 1 && niz[i + 1] % 2 == 1) { return 1; } } return 0; } //в) Имплементирати потпрограм prebaci_obod_u_niz који све елементе који се налазе по ободу //матрице пребацује у низ.Написати процедуру за приказ елемената низа и позвати је у оквиру //овог потпрограма за приказ елемената ново - креираног низа.У оквиру ово потпрограма //позвати процедуру која проверава да ли у ново - креираном низу постоји подниз непарних //бројева чија је дужина већа од 2 (искористити претходно имплементирани потпрограм // ima_podniz_neparnih). void prebaci_obod_u_niz(int mat[10][10], int n) { int niz[100], dim = 0; for (int i = 0; i < n; i++) { niz[dim++] = mat[0][i]; } for (int i = 1; i < n; i++) { niz[dim++] = mat[i][n - 1]; } for (int i = n - 2; i >= 0; i--) { niz[dim++] = mat[n-1][i]; } for (int i = n - 2; i >= 1; i--) { niz[dim++] = mat[i][0]; } ispisi_niz(niz, dim); if (ima_podniz_neparnih(niz, dim) == 1) { printf("Postoji podniz od bar 2 neparna clana\n"); return; } printf("Ne postoji podniz od bar 2 neparna clana\n"); /*for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == 0 || i == n - 1 || j == 0 || j == n - 1) { niz[dim++] = mat[i][j]; } } }*/ } int da_li_se_broj_nalazi_na_glavnoj(int matrica[10][10], int n, int broj) { for (int i = 0; i < n; i++) { if (matrica[i][i] == broj) return 1; } return 0; } /*150. Da li se svi el na sporednoj nalaze i na glavnoj*/ int da_li_se_svi_na_sporednoj_nalaze_i_na_glavnoj(int matrica[10][10], int n) { // prolazak kroz sporednu for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { //matrica[i][j] = 9, 5, 5, 9 odnosno svaki na sporednoj if (i + j == n - 1) { // siguran sam da je mat[i][j] na sporednoj dijagonali // proveri da li je ovaj clan negde na glavnoj if (da_li_se_broj_nalazi_na_glavnoj(matrica, n, matrica[i][j]) == 0) { return 0; } } } } return 1; } int da_li_postoji_u_nizu(int niz[], int n, int broj) { for (int i = 0; i < n; i++) { if (niz[i] == broj) return 1; } return 0; } /*171 unija glaVNE i sporedne dijagonale bez ponavavljanja*/ void unija_glavne_i_sporedne(int matrica[10][10], int n) { int niz[100]; int dim = 0; for (int i = 0; i < n; i++) { if (da_li_postoji_u_nizu(niz, dim, matrica[i][i]) == 0) { niz[dim++] = matrica[i][i]; } } for (int i = 0; i < n; i++) { if(da_li_postoji_u_nizu(niz, dim, matrica[i][n-1-i]) == 0) { niz[dim++] = matrica[i][n - 1 - i]; } } printf("\n\n"); ispisi_niz(niz, dim); } void dodaj_broj_u_niz_na_indeks(int niz[], int* n, int broj, int index) { // index = 1, n=4 => i=4,3,2 for (int i = *n; i > index; i--) { niz[i] = niz[i - 1]; } niz[index] = broj; (*n)++; } //(а)Написати функцију која додаје нови елемент у низ али тако да низ остане сортиран у //неопадајућем редоследу, void dodaj_da_ostane_sortiran_neopdajuce(int niz[], int* n, int broj) { // 9 5 5 3 for (int i = 0; i < *n; i++) { if (broj >= niz[i]) { dodaj_broj_u_niz_na_indeks(niz, n, broj, i); return; } } dodaj_broj_u_niz_na_indeks(niz, n, broj, *n); } //(б)Написати процедуру која формира неопадајући низ од елемената испод главне дијагонале //матрице. void formiraj_neopdajuci(int matrica[10][10], int n) { int niz[100], dim = 0; for (int i = 0; i < n; i++) { dodaj_da_ostane_sortiran_neopdajuce(niz, &dim, matrica[i][i]); } printf("\n\n"); ispisi_niz(niz, dim); } int main(void) { int matrica[10][10] = { {4,7,8,8}, {4,2,5,7}, {7,5,4,2}, {11,2,1,3} }; int n = 4; ispisi_matricu(matrica, n); formiraj_neopdajuci(matrica, n); }