Advertisement
Mixilino

5 zad malo modifikovani radi lakse provere

Apr 20th, 2019
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.86 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. typedef int ARRAY_10_10[3][3];
  4. typedef int ARRAY_100[100];
  5.  
  6. int uporedi(int a, int b);
  7. void zadatak1(void);
  8.  
  9. void srv(int n, int zadatiBroj, float* srv);
  10. void zadatak2(void);
  11.  
  12. void postoji(int X[], int n, int broj, int *pozicija);
  13. void izbaci(int X[], int *n, int position);
  14. void prikazNiy(int X[], int n);
  15. void zadatak3(void) {
  16.     int X[] = { 1,3,4,5,3,3,2,1,2,4,6 };
  17.     int n = 11;
  18.     int pozicija;
  19.     printf("\nNiz sa duplikatima je:");
  20.     prikazNiy(X, n);
  21.     for (int i = 0; i < n; i++)
  22.     {
  23.         postoji(X, n, X[i], &pozicija);
  24.         if (pozicija != i) {
  25.             izbaci(X, &n, pozicija);
  26.             i--;
  27.         }
  28.     }
  29.     printf("\nNiz bez duplikata je:");
  30.     prikazNiy(X, n);
  31. }
  32.  
  33. int nadjiNajveciParniElementNiza(ARRAY_100 x, int n);
  34. void sortirajNiz(ARRAY_100 x, int n);
  35. void ubaciNoviElementUSortiranomRedosledu(ARRAY_100 x, int *n, int noviEl);
  36. void prikaziNiz(ARRAY_100 x, int n);
  37. void zadatak4(void);
  38.  
  39. int sumaZadatogRedaMatrice(ARRAY_10_10 M, int n, int m, int red);
  40. void najveciElementZadatogRedaMatrice(ARRAY_10_10 M, int n, int m, int red, int *najveci);
  41. void formirajNizOdParnihElemenatMatriceBezPonavljanja(ARRAY_10_10 M, int n, int m, ARRAY_100 X, int *nx);
  42. void prikaziMatricu(ARRAY_10_10 M, int n, int m);
  43. void zadatak5(void);
  44.  
  45. void glavniMeni(void);
  46.  
  47. int main(void) {
  48.     glavniMeni();
  49.     return 0;
  50. }
  51.  
  52. int uporedi(int a, int b)
  53. {
  54.     if (a == b) {
  55.         return 0;
  56.     }
  57.     else if (a > b) {
  58.         return 1;
  59.     }
  60.     else {
  61.         return -1;
  62.     }
  63. }
  64.  
  65. void zadatak1(void)
  66. {
  67.     int n = 3;
  68.     char unos = 'd';
  69.     int x, y, status;
  70.     while (unos != 'n') {
  71.         printf("Unesite dva broja\n");
  72.         scanf("%d %d", &x, &y);
  73.         status = uporedi(x, y);
  74.         if (status == 1) {
  75.             printf("Broj (%d) je veci od broja (%d)\n", x, y);
  76.         }
  77.         else if (status == 0) {
  78.             printf("Broj (%d) je jednak broju (%d)\n", x, y);
  79.         }
  80.         else {
  81.             printf("Broj (%d) je manji od broja (%d)\n", x, y);
  82.         }
  83.         printf("Da li zelite jos da unosite (d-da / n-ne): ");
  84.         scanf(" %c", &unos);
  85.     }
  86. }
  87.  
  88. void srv(int n, int zadatiBroj, float * srv)
  89. {
  90.     *srv = 0.0;
  91.     int x, i = 0, suma = 0, brojac = 0;
  92.     while (i < n) {
  93.         scanf("%d", &x);
  94.         if (x % zadatiBroj == 0) {
  95.             suma += x;
  96.             brojac++;
  97.         }
  98.         i++;
  99.     }
  100.     if (brojac > 0) {
  101.         *srv = (float)suma / brojac;
  102.     }
  103. }
  104.  
  105. void zadatak2(void)
  106. {
  107.     int n, zadatiBroj;
  108.     float srve;
  109.     printf("Unesite n: ");
  110.     scanf("%d", &n);
  111.     printf("Unesite zadatiBroj: ");
  112.     scanf("%d", &zadatiBroj);
  113.     srv(n, zadatiBroj, &srve);
  114.     printf("Ukupan broj unetih brojeva je (%d), a srednja vrednost unetih brojeva deljivih sa (%d) je: (%.2f)", n, zadatiBroj, srve);
  115.  
  116. }
  117.  
  118. void postoji(int X[], int n, int broj, int * pozicija)
  119. {
  120.     for (int i = 0; i < n; i++)
  121.     {
  122.         if (X[i] == broj) {
  123.             *pozicija = i;
  124.         }
  125.     }
  126. }
  127.  
  128. void izbaci(int X[], int * n, int position)
  129. {
  130.     for (int i = position; i < *n; i++)
  131.     {
  132.         X[i] = X[i + 1];
  133.     }
  134.     (*n)--;
  135. }
  136.  
  137. void prikazNiy(int X[], int n)
  138. {
  139.     for (int i = 0; i < n; i++)
  140.     {
  141.         printf("X[%d] = %d\t", i, X[i]);
  142.     }
  143.     printf("\n");
  144. }
  145.  
  146.  
  147. int nadjiNajveciParniElementNiza(ARRAY_100 x, int n)
  148. {
  149.     int max;
  150.     int temp = 0;
  151.     for (int i = 0; i < n; i++)
  152.     {
  153.         if (x[i] % 2 == 0 && temp == 0) {
  154.             max = x[i];
  155.         }
  156.         else if (x[i] % 2 == 0 && temp && max < x[i]) {
  157.             max = x[i];
  158.         }
  159.     }
  160.     return max;
  161. }
  162.  
  163. void sortirajNiz(ARRAY_100 x, int n)
  164. {
  165.         int i, j;
  166.         for (i = 0; i < n - 1; i++) {
  167.             // Last i elements are already in place    
  168.             for (j = 0; j < n - i - 1; j++) {
  169.                 if (x[j] > x[j + 1]) {
  170.                     x[j] = x[j] ^ x[j + 1];
  171.                     x[j + 1] = x[j] ^ x[j + 1];
  172.                     x[j] = x[j] ^ x[j + 1];
  173.                 }
  174.             }
  175.         }
  176.    
  177. }
  178.  
  179. void ubaciNoviElementUSortiranomRedosledu(ARRAY_100 x, int * n, int noviEl)
  180. {
  181.     int pom;
  182.     for (int i = 0; i <= (*n); i++)
  183.     {
  184.         if (x[i] >= noviEl || i==*n) {
  185.             pom = x[i];
  186.             x[i] = noviEl;
  187.             noviEl = pom;
  188.         }
  189.     }
  190.     (*n)++;
  191.    
  192. }
  193.  
  194. void prikaziNiz(ARRAY_100 x, int n)
  195. {
  196.     for (int i = 0; i < n; i++)
  197.     {
  198.         printf("X[%d] = %d\t", i, x[i]);
  199.     }
  200.     printf("\n");
  201. }
  202.  
  203. void zadatak4(void)
  204. {
  205.     ARRAY_100 x = { 1,5,0,5,6 };
  206.     int n = 5, status = 1, y;
  207.     while (status != 0) {
  208.         printf("\nIzaberite koju funkciju zelite da pozovete: \n");
  209.         printf("1. nadjiNajveciParniElement: \n");
  210.         printf("2. sortirajNiz: \n");
  211.         printf("3. ubaciNoviElementUSortiranomRedosledu: \n");
  212.         printf("4. prikaziNiz: \n");
  213.         printf("0. Kraj! ");
  214.         scanf("%d", &status);
  215.         switch (status) {
  216.         case 1:
  217.             printf("Najveci parni element je (%d)\n", nadjiNajveciParniElementNiza(x, n));
  218.             break;
  219.         case 2:
  220.             sortirajNiz(x, n);
  221.             break;
  222.         case 3:
  223.             printf("Unesite broj koji zelite da ubacite u niz: ");
  224.             scanf("%d", &y);
  225.             sortirajNiz(x, n);
  226.             ubaciNoviElementUSortiranomRedosledu(x, &n, y);
  227.             break;
  228.         case 4:
  229.             prikaziNiz(x, n);
  230.             break;
  231.         case 0:
  232.             break;
  233.         default:
  234.             printf("Ne postoji trazena funkcija!\n");
  235.         }
  236.     }  
  237.     printf("\n");
  238.  
  239. }
  240.  
  241. int sumaZadatogRedaMatrice(ARRAY_10_10 M, int n, int m, int red)
  242. {
  243.     int suma = 0;
  244.     for (int i = 0; i < m; i++)
  245.     {
  246.         suma += M[red][i];
  247.     }
  248.     return suma;
  249. }
  250.  
  251. void najveciElementZadatogRedaMatrice(ARRAY_10_10 M, int n, int m, int red, int * najveci)
  252. {
  253.     *najveci = M[red][0];
  254.     for (int i = 0; i < m; i++)
  255.     {
  256.         if (*najveci < M[red][i]) {
  257.             *najveci = M[red][i];
  258.         }
  259.     }
  260. }
  261.  
  262. void formirajNizOdParnihElemenatMatriceBezPonavljanja(ARRAY_10_10 M, int n, int m, ARRAY_100 X, int * nx)
  263. {
  264.     *nx = 0;
  265.     int temp = 1;
  266.     for (int i = 0; i < n; i++)
  267.     {
  268.         for (int j = 0; j < m; j++)
  269.         {
  270.             if (M[i][j] % 2 == 0) {
  271.                 for (int k = 0; k < *nx; k++)
  272.                 {
  273.                     if (M[i][j] == X[k]) {
  274.                         temp = 0;
  275.                     }
  276.                 }
  277.                 if (temp) {
  278.                     X[(*nx)++] = M[i][j];
  279.                 }
  280.             }
  281.         }
  282.     }
  283. }
  284.  
  285. void prikaziMatricu(ARRAY_10_10 M, int n, int m)
  286. {
  287.     for (int i = 0; i < n; i++)
  288.     {
  289.         for (int j = 0; j < m; j++)
  290.         {
  291.             printf("%d\t", M[i][j]);
  292.         }
  293.         printf("\n");
  294.     }
  295. }
  296.  
  297. void zadatak5(void)
  298. {
  299.     ARRAY_10_10 M = { 1,2,3,4,5,6,7,8,9 };
  300.     ARRAY_100 X;
  301.     prikaziMatricu(M, 3, 3);
  302.     int red = 1, n = 3, m = 3;
  303.     printf("Suma (%d) reda matrice: %d\n", red, sumaZadatogRedaMatrice(M, n, m, red));
  304.     int najveci, nx;
  305.     najveciElementZadatogRedaMatrice(M, n, m, red, &najveci);
  306.     printf("Najveci element iz (%d) reda matrice: %d\n", red, najveci);
  307.     formirajNizOdParnihElemenatMatriceBezPonavljanja(M, n, m, X, &nx);
  308.     prikaziNiz(X, nx);
  309.     printf("\n");
  310. }
  311.  
  312. void glavniMeni(void)
  313. {
  314.     int x = 3;
  315.    
  316.     while (x!=6) {
  317.         printf("GLAVNI MENI:\n");
  318.         printf("1. Pokreni zadatak 1\n");
  319.         printf("2. Pokreni zadatak 2\n");
  320.         printf("3. Pokreni zadatak 3\n");
  321.         printf("4. Pokreni zadatak 4\n");
  322.         printf("5. Pokreni zadatak 5\n");
  323.         printf("6. Kraj rada:\n");
  324.         printf("\nVas unos: ");
  325.         scanf("%d", &x);
  326.         switch (x) {
  327.         case 1:
  328.             zadatak1();
  329.             break;
  330.         case 2:
  331.             zadatak2();
  332.             break;
  333.         case 3:
  334.             zadatak3();
  335.             break;
  336.         case 4:
  337.             zadatak4();
  338.             break;
  339.         case 5:
  340.             zadatak5();
  341.             break;
  342.         case 6:
  343.             printf("Kraj programa\n");
  344.             break;
  345.         default:
  346.             printf("Los unos\n");
  347.         }
  348.     }
  349. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement