Facebook
From mixilino, 1 Year ago, written in C.
Embed
Download Paste or View Raw
Hits: 128
  1. #define _CRT_SECURE_NO_WARNINGS_
  2. #include<stdio.h>
  3.  
  4. void ispisi_matricu(int mat[10][10], int n) {
  5.         for (int i = 0; i < n; i++)
  6.         {
  7.                 for (int j = 0; j < n; j++)
  8.                 {
  9.                         printf("%d\t", mat[i][j]);
  10.                 }
  11.                 printf("\n");
  12.         }
  13. }
  14. void ispisi_niz(int niz[], int n) {
  15.         for (int i = 0; i < n; i++)
  16.         {
  17.                 printf("%d\t", niz[i]);
  18.         }
  19.         printf("\n");
  20. }
  21.  
  22. /*122.Дата је матрица целих бројева. Написати функцију која рачуна суму елемената задатог реда
  23. матрице.*/
  24. int nadji_sumu_reda(int mat[10][10], int n, int red) {
  25.         int suma = 0;
  26.         for (int i = 0; i < n; i++)
  27.         {
  28.                 suma += mat[red][i];
  29.         }
  30.         return suma;
  31. }
  32. /*124. isto za kolonu*/
  33. int nadji_sumu_kolone(int mat[10][10], int n, int kolona) {
  34.         int suma = 0;
  35.         for (int i = 0; i < n; i++)
  36.         {
  37.                 suma += mat[i][kolona];
  38.         }
  39.         return suma;
  40. }
  41.  
  42. //а) Имплементирати потпрограм je_rastuci који проверава да ли је задати ред матрице растући.
  43. int je_rastuci(int mat[10][10], int n, int red) {
  44.         for (int i = 1; i < n; i++)
  45.         {
  46.                 if (mat[red][i - 1]  >= mat[red][i]) {
  47.                         return 0;
  48.                 }
  49.         }
  50.         return 1;
  51. }
  52.  
  53.  
  54. //б) Имплементирати потпрограм ima_podniz_neparnih који проверава да ли у низу целих
  55. //бројева постоји подниз непарних бројева чија је дужина већа од 2.
  56. int ima_podniz_neparnih(int niz[], int n) {
  57.         // ima podniz neparnih minimalne duzine 2
  58.         for (int i = 0; i < n - 1; i++)
  59.         {
  60.                 if (niz[i] % 2 == 1 && niz[i + 1] % 2 == 1) {
  61.                         return 1;
  62.                 }
  63.         }
  64.         return 0;
  65. }
  66.  
  67. //в) Имплементирати потпрограм prebaci_obod_u_niz који све елементе који се налазе по ободу
  68. //матрице пребацује у низ.Написати процедуру за приказ елемената низа и позвати је у оквиру
  69. //овог потпрограма за приказ елемената ново - креираног низа.У оквиру ово потпрограма
  70. //позвати процедуру која проверава да ли у ново - креираном низу постоји подниз непарних
  71. //бројева чија је дужина већа од 2 (искористити претходно имплементирани потпрограм
  72. //      ima_podniz_neparnih).
  73. void prebaci_obod_u_niz(int mat[10][10], int n) {
  74.         int niz[100], dim = 0;
  75.         for (int i = 0; i < n; i++)
  76.         {
  77.                 niz[dim++] = mat[0][i];
  78.         }
  79.         for (int i = 1; i < n; i++)
  80.         {
  81.                 niz[dim++] = mat[i][n - 1];
  82.         }
  83.         for (int i = n - 2; i >= 0; i--)
  84.         {
  85.                 niz[dim++] = mat[n-1][i];
  86.         }
  87.         for (int i = n - 2; i >= 1; i--)
  88.         {
  89.                 niz[dim++] = mat[i][0];
  90.         }
  91.         ispisi_niz(niz, dim);
  92.         if (ima_podniz_neparnih(niz, dim) == 1) {
  93.                 printf("Postoji podniz od bar 2 neparna clana\n");
  94.                 return;
  95.         }
  96.         printf("Ne postoji podniz od bar 2 neparna clana\n");
  97.  
  98.         /*for (int i = 0; i < n; i++)
  99.         {
  100.                 for (int j = 0; j < n; j++)
  101.                 {
  102.                         if (i == 0 || i == n - 1 || j == 0 || j == n - 1) {
  103.                                 niz[dim++] = mat[i][j];
  104.                         }
  105.                 }
  106.         }*/
  107. }
  108.  
  109. int da_li_se_broj_nalazi_na_glavnoj(int matrica[10][10], int n, int broj) {
  110.         for (int i = 0; i < n; i++)
  111.         {
  112.                 if (matrica[i][i] == broj) return 1;
  113.         }
  114.         return 0;
  115. }
  116.  
  117. /*150. Da li se svi el na sporednoj nalaze i na glavnoj*/
  118. int da_li_se_svi_na_sporednoj_nalaze_i_na_glavnoj(int matrica[10][10], int n) {
  119.         // prolazak kroz sporednu
  120.         for (int i = 0; i < n; i++)
  121.         {
  122.                 for (int j = 0; j < n; j++)
  123.                 {
  124.                         //matrica[i][j] = 9, 5, 5, 9 odnosno svaki na sporednoj
  125.                         if (i + j == n - 1) {
  126.                                 // siguran sam da je mat[i][j] na sporednoj dijagonali
  127.                                 // proveri da li je ovaj clan negde na glavnoj
  128.                                 if (da_li_se_broj_nalazi_na_glavnoj(matrica, n, matrica[i][j]) == 0) {
  129.                                         return 0;
  130.                                 }
  131.                         }
  132.                 }
  133.         }
  134.         return 1;
  135. }
  136.  
  137.  
  138. int da_li_postoji_u_nizu(int niz[], int n, int broj) {
  139.         for (int i = 0; i < n; i++)
  140.         {
  141.                 if (niz[i] == broj) return 1;
  142.         }
  143.         return 0;
  144. }
  145.  
  146. /*171 unija glaVNE i sporedne dijagonale bez ponavavljanja*/
  147. void unija_glavne_i_sporedne(int matrica[10][10], int n) {
  148.         int niz[100];
  149.         int dim = 0;
  150.         for (int i = 0; i < n; i++)
  151.         {
  152.                 if (da_li_postoji_u_nizu(niz, dim, matrica[i][i]) == 0) {
  153.                         niz[dim++] = matrica[i][i];
  154.                 }
  155.         }
  156.         for (int i = 0; i < n; i++)
  157.         {
  158.                 if(da_li_postoji_u_nizu(niz, dim, matrica[i][n-1-i]) == 0) {
  159.                         niz[dim++] = matrica[i][n - 1 - i];
  160.                 }
  161.         }
  162.         printf("\n\n");
  163.         ispisi_niz(niz, dim);
  164. }
  165.  
  166. void dodaj_broj_u_niz_na_indeks(int niz[], int* n, int broj, int index) {
  167.         // index = 1, n=4 => i=4,3,2
  168.         for (int i = *n; i  > index; i--)
  169.         {
  170.                 niz[i] = niz[i - 1];
  171.         }
  172.         niz[index] = broj;
  173.         (*n)++;
  174. }
  175. //(а)Написати функцију која додаје нови елемент у низ али тако да низ остане сортиран у
  176. //неопадајућем редоследу,
  177. void dodaj_da_ostane_sortiran_neopdajuce(int niz[], int* n, int broj) {
  178.         // 9 5 5 3
  179.         for (int i = 0; i < *n; i++)
  180.         {
  181.                 if (broj >= niz[i]) {
  182.                         dodaj_broj_u_niz_na_indeks(niz, n, broj, i);
  183.                         return;
  184.                 }
  185.         }
  186.  
  187.         dodaj_broj_u_niz_na_indeks(niz, n, broj, *n);
  188. }
  189.  
  190. //(б)Написати процедуру која формира неопадајући низ од елемената испод главне дијагонале
  191. //матрице.
  192. void formiraj_neopdajuci(int matrica[10][10], int n) {
  193.         int niz[100], dim = 0;
  194.         for (int i = 0; i < n; i++)
  195.         {
  196.                 dodaj_da_ostane_sortiran_neopdajuce(niz, &dim, matrica[i][i]);
  197.         }
  198.         printf("\n\n");
  199.         ispisi_niz(niz, dim);
  200. }
  201.  
  202. int main(void) {
  203.         int matrica[10][10] = {
  204.                 {4,7,8,8},
  205.                 {4,2,5,7},
  206.                 {7,5,4,2},
  207.                 {11,2,1,3}
  208.         };
  209.         int n = 4;
  210.         ispisi_matricu(matrica, n);
  211.         formiraj_neopdajuci(matrica, n);
  212.  
  213.  
  214. }