Advertisement
Mixilino

jun2020

Jul 6th, 2020
1,063
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.51 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. typedef struct cvor* PCVOR;
  4. typedef struct cvor {
  5.     int broj;
  6.     PCVOR sledeci;
  7. }CVOR;
  8.  
  9.  
  10.  
  11. void korisnickiMeni();
  12. int zbirCifaraBroja(int broj);
  13. void zadatak1(void);
  14.  
  15. void zadatak2();
  16.  
  17. void zadatak3();
  18. void prikazNiza(int niz[], int n);
  19. int vratiNajveci(int niz[], int n);
  20. void daLiJeRastuci(int niz[], int n);
  21. void cifreRastuce4();
  22. int daLiJeOpadajuci(int niz[], int n);
  23. void ubaciUListuIzNiza(int niz[], int n, PCVOR* glava);
  24. void ubaciNaKraj(PCVOR* glava, int broj);
  25. void ispisiListu(PCVOR glava);
  26. void ubaciDaOstaneSortiranaOpadajuce(PCVOR* glava, int broj);
  27. int daLiPostojiUListi(PCVOR glava, int broj);
  28. void prebaciElementeIzMatrice(PCVOR* glava, int matrica[4][4], int dim);
  29.  
  30.  
  31. int main(void) {
  32.     korisnickiMeni();
  33. }
  34.  
  35.  
  36.  
  37. void zadatak3() {
  38.     int niz[] = { 10,101,21,202,31,303,404,505, 605, 707 };
  39.     int n = sizeof(niz) / sizeof(int);
  40.     int matrica[4][4] = { {1,3,4,3}, {2,3,4,4}, {5,5,2,4}, {3,3,1,9} };
  41.     int dim = 4;
  42.     int x, broj;
  43.     while (1) {
  44.         printf("1. Prikazi niz \n");
  45.         printf("2. Nadji najveci broj u nizu\n");
  46.         printf("3. Da li je niz rastuci\n");
  47.         printf("4. Da li su cifre broja rastuce\n");
  48.         printf("5. Formiraj listu od elemenata niza\n");
  49.         printf("6. Formiraj listu od elemenata matrice\n");
  50.         printf("0. Izlaz iz zadatka 3\n");
  51.         printf("Vas unos: ");
  52.         scanf("%d", &x);
  53.         getchar();
  54.         PCVOR glava = NULL;
  55.         switch (x) {
  56.         case 1:
  57.             prikazNiza(niz, n);
  58.             break;
  59.         case 2:
  60.             broj = vratiNajveci(niz, n);
  61.             printf("Najveci broj u nizu je %d\n", broj);
  62.             break;
  63.         case 3:
  64.             daLiJeRastuci(niz, n);
  65.             break;
  66.         case 4:
  67.             cifreRastuce4();
  68.             break;
  69.         case 5:
  70.             glava = NULL;
  71.             ubaciUListuIzNiza(niz, n, &glava);
  72.             ispisiListu(glava);
  73.             break;
  74.         case 6:
  75.             glava = NULL;
  76.             prebaciElementeIzMatrice(&glava, matrica, dim);
  77.             ispisiListu(glava);
  78.             break;
  79.         case 0:
  80.             return;
  81.         }
  82.     }
  83. }
  84.  
  85.  
  86. void ubaciUListuIzNiza(int niz[], int n, PCVOR* glava)
  87. {
  88.     for (int i = 0; i < n; i++)
  89.     {
  90.         if (niz[i] % zbirCifaraBroja(niz[i]) == 0) {
  91.             ubaciNaKraj(glava, niz[i]);
  92.         }
  93.     }
  94. }
  95. void ubaciNaKraj(PCVOR* glava, int broj) {
  96.     PCVOR novi = malloc(sizeof(CVOR));
  97.     novi->broj = broj;
  98.     novi->sledeci = NULL;
  99.     if (*glava == NULL) {
  100.         *glava = novi;
  101.         return;
  102.     }
  103.     PCVOR temp = *glava;
  104.     while (temp->sledeci != NULL) {
  105.         temp = temp->sledeci;
  106.     }
  107.     temp->sledeci = novi;
  108. }
  109. void ispisiListu(PCVOR glava) {
  110.     while (glava != NULL) {
  111.         printf("%d\t", glava->broj);
  112.         glava = glava->sledeci;
  113.     }
  114.     printf("\n");
  115. }
  116. void ubaciDaOstaneSortiranaOpadajuce(PCVOR* glava, int broj) {
  117.     PCVOR novi = malloc(sizeof(CVOR));
  118.     novi->broj = broj;
  119.     // 5->3->NULL   8
  120.     if (*glava == NULL) {
  121.         novi->sledeci = *glava;
  122.         *glava = novi;
  123.         return;
  124.     }
  125.     if ((*glava)->broj < broj) {
  126.         novi->sledeci = *glava;
  127.         *glava = novi;
  128.         return;
  129.     }
  130.     PCVOR temp = *glava;
  131.     while (temp->sledeci != NULL) {
  132.         if (temp->broj > broj && temp->sledeci->broj <= broj) {
  133.             novi->sledeci = temp->sledeci;
  134.             temp->sledeci = novi;
  135.             return;
  136.         }
  137.         temp = temp->sledeci;
  138.     }
  139.     temp->sledeci = novi;
  140.     novi->sledeci = NULL;
  141. }
  142. int daLiPostojiUListi(PCVOR glava, int broj) {
  143.     while (glava != NULL) {
  144.         if (glava->broj == broj) {
  145.             return 1;
  146.         }
  147.         glava = glava->sledeci;
  148.     }
  149.     return 0;
  150. }
  151. void prebaciElementeIzMatrice(PCVOR* glava, int matrica[4][4], int dim) {
  152.     for (int i = 0; i < dim; i++)
  153.     {
  154.         for (int j = 0; j < dim; j++)
  155.         {
  156.             if (daLiPostojiUListi(*glava, matrica[i][j]) == 0) {
  157.                 ubaciDaOstaneSortiranaOpadajuce(glava, matrica[i][j]);
  158.             }
  159.         }
  160.     }
  161. }
  162. void prikazNiza(int niz[], int n) {
  163.     for (int i = 0; i < n; i++)
  164.     {
  165.         printf("%d ", niz[i]);
  166.     }
  167.     printf("\n");
  168. }
  169. int vratiNajveci(int niz[], int n) {
  170.     int temp = 0;
  171.     int max = 0;
  172.     for (int i = 0; i < n; i++)
  173.     {
  174.         int zbir = zbirCifaraBroja(niz[i]);
  175.         if (zbir != 0 && niz[i] % zbir == 0) {
  176.             if (temp == 0) {
  177.                 max = niz[i];
  178.                 temp++;
  179.             }
  180.             else {
  181.                 if (max < niz[i]) {
  182.                     max = niz[i];
  183.                 }
  184.             }
  185.         }
  186.     }
  187.     return max;
  188. }
  189. void daLiJeRastuci(int niz[], int n) {
  190.     for (int i = 1; i < n; i++)
  191.     {
  192.         if (zbirCifaraBroja(niz[i - 1]) > zbirCifaraBroja(niz[i])) {
  193.             printf("Niz nije rastuci. \n");
  194.             return;
  195.         }
  196.     }
  197.     printf("Niz je rastuci. \n");
  198. }
  199. void cifreRastuce4() {
  200.     int x;
  201.     printf("Unesite broj da proverite da li su cifre rastuce: ");
  202.     scanf("%d", &x);
  203.     int niz[50];
  204.     int n = 0;
  205.     while (x != 0) {
  206.         int cifra = x % 10;
  207.         niz[n++] = cifra;
  208.         x = x / 10;
  209.     }
  210.     int temp = daLiJeOpadajuci(niz, n);
  211.     if (temp) {
  212.         printf("Cifre su rastuce\n");
  213.     }
  214.     else {
  215.         printf("Cifre nisu rastuce\n");
  216.     }
  217. }
  218. int daLiJeOpadajuci(int niz[], int n) {
  219.     for (int i = 1; i < n; i++)
  220.     {
  221.         if (niz[i - 1] < niz[i]) {
  222.             return 0;
  223.         }
  224.     }
  225.     return 1;
  226. }
  227.  
  228.  
  229. void zadatak1(void) {
  230.     int i = 0;
  231.     int x;
  232.     while (1) {
  233.         printf("Unesite broj: ");
  234.         scanf("%d", &x);
  235.         i++;
  236.         int zbir = zbirCifaraBroja(x);
  237.         if (x % zbir == 0) {
  238.             break;
  239.         }
  240.     }
  241.     printf("Od unetih %d brojeva prvi broj koji je deljiv sa zbirom svojih cifara je broj %d\n", i, x);
  242. }
  243. int zbirCifaraBroja(int broj) {
  244.     int zbir = 0;
  245.     while (broj != 0) {
  246.         int cifra = broj % 10;
  247.         zbir += cifra;
  248.         broj = broj / 10;
  249.     }
  250.     return zbir;
  251. }
  252. void zadatak2() {
  253.     int n;
  254.     printf("Unesite neparan broj: ");
  255.     scanf("%d", &n);
  256.  
  257.     FILE* fajl = fopen("figura.txt", "w");
  258.  
  259.     for (int i = 0; i < n; i++)
  260.     {
  261.         for (int j = 0; j < n - i - 1; j++)
  262.         {
  263.             fprintf(fajl, " ");
  264.         }
  265.         for (int j = 0; j < 2 * i + 1; j++)
  266.         {
  267.             fprintf(fajl, "*");
  268.         }
  269.         fprintf(fajl, "\n");
  270.     }
  271.     for (int i = n - 2; i >= 0; i--)
  272.     {
  273.         // 1 0
  274.         for (int j = 0; j < n - i - 1; j++)
  275.         {
  276.             fprintf(fajl, " ");
  277.         }
  278.         for (int j = 0; j < 2 * i + 1; j++)
  279.         {
  280.             fprintf(fajl, "*");
  281.         }
  282.         fprintf(fajl, "\n");
  283.     }
  284. }
  285. void korisnickiMeni() {
  286.     printf("#####################################################\n");
  287.     printf("Student: MIHAILO_NISAVIC\n");
  288.     printf("Broj indeksa: 0015/2018\n");
  289.     printf("Predmet: Programiranje 1\n");
  290.     printf("#####################################################\n");
  291.     char odgovor[5] = "ne";
  292.     do {
  293.         printf("1. Pokreni zadatak 1\n");
  294.         printf("2. Pokreni zadatak 2\n");
  295.         printf("3. Pokreni zadatak 3\n");
  296.         printf("0. Izlazak iz programa (da)\n");
  297.         int x;
  298.         printf("Izaberite neku od opcija (0-3): ");
  299.         scanf("%d", &x);
  300.         getchar();
  301.         switch (x) {
  302.         case 1:
  303.             zadatak1();
  304.             break;
  305.         case 2:
  306.             zadatak2();
  307.             break;
  308.         case 3:
  309.             zadatak3();
  310.             break;
  311.         case 0:
  312.             printf("Da li ste sigurni da zelite da napustite program? ");
  313.             gets(odgovor);
  314.         }
  315.     } while (!strcmp(odgovor, "da") == 0);
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement