Advertisement
Mixilino

kris

Jun 7th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.62 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6.  
  7. typedef struct cvor* PCVOR;
  8. typedef struct cvor {
  9.     int podatak;
  10.     int frekvencija;
  11.     PCVOR sledeci;
  12. }CVOR;
  13.  
  14. void glavniMeni();
  15. void zadatak1(void);
  16. int savrsen_Broj(int br);
  17. int frekvencija(int x[], int br, int n);
  18. PCVOR zadatak1_1(int x[], int n);
  19. int postojiLista(PCVOR glava, int br);
  20. void zadatak1_2(PCVOR glava);
  21.  
  22. int main(void) {
  23.  
  24.     //glavniMeni();
  25.  
  26.  
  27.     zadatak1();
  28.     /* PROVERA FJE SAVRSEN BROJ*/
  29.     int X[] = { 1,3,6,2,4,6,28,3,496,28,496,28 };
  30.     int n = sizeof(X) / sizeof(int);
  31.     for (int i = 0; i < n; i++)
  32.     {
  33.         printf("\n%d - %d", X[i], savrsen_Broj(X[i]));
  34.     }
  35.  
  36.  
  37.     system("pause");
  38.     return 0;
  39.  
  40. }
  41.  
  42. void glavniMeni() {
  43.  
  44.     int izbor;
  45.  
  46.     do {
  47.         printf("\nPokreni zadatak 1.");
  48.         printf("\nPokreni zadatak 2.");
  49.         printf("\nPokreni zadatak 3");
  50.  
  51.         printf("\nUnesite izbor: ");
  52.         scanf("%d", &izbor);
  53.  
  54.         switch (izbor)
  55.         {
  56.  
  57.         case 1: break;
  58.         case 2: break;
  59.         case 3: break;
  60.         case 0: return;
  61.         default: printf("\nUneli ste pogresan izbor.");
  62.             break;
  63.         }
  64.  
  65.         system("pause");
  66.  
  67.     } while (izbor != 0);
  68.  
  69. }
  70. void zadatak1(void) {
  71.     int X[] = { 1,3,6,2,4,6,28,3,496,28,496,28 };
  72.     int n = sizeof(X) / sizeof(int);    // da bi bilo lakse ako se nesto menja.
  73.     PCVOR glava = zadatak1_1(X, n);
  74.     zadatak1_2(glava);
  75.  
  76.  
  77. }
  78.  
  79. int savrsen_Broj(int br) {
  80.  
  81.     int suma = 0;   // br/2 + 1 radi optimizacije sto ne mora jer nema integera izmedju 2 i 1.
  82.     for (int i = 1; i < br/2+1; i++) {
  83.         if (br % i == 0) {
  84.             suma += i;
  85.         }
  86.     }
  87.     if (suma == br) {
  88.         return 1;
  89.     }
  90.     return 0;
  91. }
  92. int frekvencija(int x[], int br, int n) {
  93.     int brojac = 0;
  94.     for (int i = 0; i < n; i++) {
  95.         if (x[i] == br)
  96.             brojac++;
  97.  
  98.     }
  99.     return brojac;
  100. }
  101. int postojiLista(PCVOR glava, int br) {
  102.  
  103.     PCVOR pom = glava;
  104.     int postoji = 0;
  105.     while (pom != NULL) {
  106.  
  107.         if (pom->podatak == br) {
  108.             postoji = 1;
  109.             break;
  110.         }
  111.         pom = pom->sledeci;
  112.     }
  113.  
  114.     return postoji;  //0 ako ne postoji taj element u listii
  115.  
  116.  
  117. }
  118.  
  119. PCVOR zadatak1_1(int x[], int n) {
  120.     PCVOR glava = NULL;
  121.  
  122.     for (int i = 0; i < n; i++) {
  123.         if ( savrsen_Broj(x[i]) && !postojiLista(glava, x[i])) {
  124.             PCVOR novi = (PCVOR)malloc(sizeof(CVOR));
  125.             novi->podatak = x[i];
  126.             int frekvencijaBr = frekvencija(x, x[i], n);
  127.             novi->frekvencija = frekvencijaBr;
  128.             novi->sledeci = glava;
  129.  
  130.             glava = novi;
  131.         }
  132.  
  133.  
  134.     }
  135.  
  136.  
  137.     return glava;
  138. }
  139.  
  140. void zadatak1_2(PCVOR glava) {
  141.     PCVOR pom;
  142.     if (glava == NULL) {
  143.         printf("\nLista je prazna.");
  144.         return;
  145.     }
  146.     pom = glava;
  147.     while (pom != NULL) {
  148.         printf("%d %d\n", pom->podatak, pom->frekvencija);
  149.         pom = pom->sledeci;
  150.  
  151.     }
  152.  
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement