Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct cvor* PCVOR;
- typedef struct cvor {
- int podatak;
- int frekvencija;
- PCVOR sledeci;
- }CVOR;
- void glavniMeni();
- void zadatak1(void);
- int savrsen_Broj(int br);
- int frekvencija(int x[], int br, int n);
- PCVOR zadatak1_1(int x[], int n);
- int postojiLista(PCVOR glava, int br);
- void zadatak1_2(PCVOR glava);
- int main(void) {
- //glavniMeni();
- zadatak1();
- /* PROVERA FJE SAVRSEN BROJ*/
- int X[] = { 1,3,6,2,4,6,28,3,496,28,496,28 };
- int n = sizeof(X) / sizeof(int);
- for (int i = 0; i < n; i++)
- {
- printf("\n%d - %d", X[i], savrsen_Broj(X[i]));
- }
- system("pause");
- return 0;
- }
- void glavniMeni() {
- int izbor;
- do {
- printf("\nPokreni zadatak 1.");
- printf("\nPokreni zadatak 2.");
- printf("\nPokreni zadatak 3");
- printf("\nUnesite izbor: ");
- scanf("%d", &izbor);
- switch (izbor)
- {
- case 1: break;
- case 2: break;
- case 3: break;
- case 0: return;
- default: printf("\nUneli ste pogresan izbor.");
- break;
- }
- system("pause");
- } while (izbor != 0);
- }
- void zadatak1(void) {
- int X[] = { 1,3,6,2,4,6,28,3,496,28,496,28 };
- int n = sizeof(X) / sizeof(int); // da bi bilo lakse ako se nesto menja.
- PCVOR glava = zadatak1_1(X, n);
- zadatak1_2(glava);
- }
- int savrsen_Broj(int br) {
- int suma = 0; // br/2 + 1 radi optimizacije sto ne mora jer nema integera izmedju 2 i 1.
- for (int i = 1; i < br/2+1; i++) {
- if (br % i == 0) {
- suma += i;
- }
- }
- if (suma == br) {
- return 1;
- }
- return 0;
- }
- int frekvencija(int x[], int br, int n) {
- int brojac = 0;
- for (int i = 0; i < n; i++) {
- if (x[i] == br)
- brojac++;
- }
- return brojac;
- }
- int postojiLista(PCVOR glava, int br) {
- PCVOR pom = glava;
- int postoji = 0;
- while (pom != NULL) {
- if (pom->podatak == br) {
- postoji = 1;
- break;
- }
- pom = pom->sledeci;
- }
- return postoji; //0 ako ne postoji taj element u listii
- }
- PCVOR zadatak1_1(int x[], int n) {
- PCVOR glava = NULL;
- for (int i = 0; i < n; i++) {
- if ( savrsen_Broj(x[i]) && !postojiLista(glava, x[i])) {
- PCVOR novi = (PCVOR)malloc(sizeof(CVOR));
- novi->podatak = x[i];
- int frekvencijaBr = frekvencija(x, x[i], n);
- novi->frekvencija = frekvencijaBr;
- novi->sledeci = glava;
- glava = novi;
- }
- }
- return glava;
- }
- void zadatak1_2(PCVOR glava) {
- PCVOR pom;
- if (glava == NULL) {
- printf("\nLista je prazna.");
- return;
- }
- pom = glava;
- while (pom != NULL) {
- printf("%d %d\n", pom->podatak, pom->frekvencija);
- pom = pom->sledeci;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement