Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include<stdio.h>
- typedef struct cvor* PCVOR;
- typedef struct cvor {
- int broj;
- PCVOR sledeci;
- }CVOR;
- void korisnickiMeni();
- int zbirCifaraBroja(int broj);
- void zadatak1(void);
- void zadatak2();
- void zadatak3();
- void prikazNiza(int niz[], int n);
- int vratiNajveci(int niz[], int n);
- void daLiJeRastuci(int niz[], int n);
- void cifreRastuce4();
- int daLiJeOpadajuci(int niz[], int n);
- void ubaciUListuIzNiza(int niz[], int n, PCVOR* glava);
- void ubaciNaKraj(PCVOR* glava, int broj);
- void ispisiListu(PCVOR glava);
- void ubaciDaOstaneSortiranaOpadajuce(PCVOR* glava, int broj);
- int daLiPostojiUListi(PCVOR glava, int broj);
- void prebaciElementeIzMatrice(PCVOR* glava, int matrica[4][4], int dim);
- int main(void) {
- korisnickiMeni();
- }
- void zadatak3() {
- int niz[] = { 10,101,21,202,31,303,404,505, 605, 707 };
- int n = sizeof(niz) / sizeof(int);
- int matrica[4][4] = { {1,3,4,3}, {2,3,4,4}, {5,5,2,4}, {3,3,1,9} };
- int dim = 4;
- int x, broj;
- while (1) {
- printf("1. Prikazi niz \n");
- printf("2. Nadji najveci broj u nizu\n");
- printf("3. Da li je niz rastuci\n");
- printf("4. Da li su cifre broja rastuce\n");
- printf("5. Formiraj listu od elemenata niza\n");
- printf("6. Formiraj listu od elemenata matrice\n");
- printf("0. Izlaz iz zadatka 3\n");
- printf("Vas unos: ");
- scanf("%d", &x);
- getchar();
- PCVOR glava = NULL;
- switch (x) {
- case 1:
- prikazNiza(niz, n);
- break;
- case 2:
- broj = vratiNajveci(niz, n);
- printf("Najveci broj u nizu je %d\n", broj);
- break;
- case 3:
- daLiJeRastuci(niz, n);
- break;
- case 4:
- cifreRastuce4();
- break;
- case 5:
- glava = NULL;
- ubaciUListuIzNiza(niz, n, &glava);
- ispisiListu(glava);
- break;
- case 6:
- glava = NULL;
- prebaciElementeIzMatrice(&glava, matrica, dim);
- ispisiListu(glava);
- break;
- case 0:
- return;
- }
- }
- }
- void ubaciUListuIzNiza(int niz[], int n, PCVOR* glava)
- {
- for (int i = 0; i < n; i++)
- {
- if (niz[i] % zbirCifaraBroja(niz[i]) == 0) {
- ubaciNaKraj(glava, niz[i]);
- }
- }
- }
- void ubaciNaKraj(PCVOR* glava, int broj) {
- PCVOR novi = malloc(sizeof(CVOR));
- novi->broj = broj;
- novi->sledeci = NULL;
- if (*glava == NULL) {
- *glava = novi;
- return;
- }
- PCVOR temp = *glava;
- while (temp->sledeci != NULL) {
- temp = temp->sledeci;
- }
- temp->sledeci = novi;
- }
- void ispisiListu(PCVOR glava) {
- while (glava != NULL) {
- printf("%d\t", glava->broj);
- glava = glava->sledeci;
- }
- printf("\n");
- }
- void ubaciDaOstaneSortiranaOpadajuce(PCVOR* glava, int broj) {
- PCVOR novi = malloc(sizeof(CVOR));
- novi->broj = broj;
- // 5->3->NULL 8
- if (*glava == NULL) {
- novi->sledeci = *glava;
- *glava = novi;
- return;
- }
- if ((*glava)->broj < broj) {
- novi->sledeci = *glava;
- *glava = novi;
- return;
- }
- PCVOR temp = *glava;
- while (temp->sledeci != NULL) {
- if (temp->broj > broj && temp->sledeci->broj <= broj) {
- novi->sledeci = temp->sledeci;
- temp->sledeci = novi;
- return;
- }
- temp = temp->sledeci;
- }
- temp->sledeci = novi;
- novi->sledeci = NULL;
- }
- int daLiPostojiUListi(PCVOR glava, int broj) {
- while (glava != NULL) {
- if (glava->broj == broj) {
- return 1;
- }
- glava = glava->sledeci;
- }
- return 0;
- }
- void prebaciElementeIzMatrice(PCVOR* glava, int matrica[4][4], int dim) {
- for (int i = 0; i < dim; i++)
- {
- for (int j = 0; j < dim; j++)
- {
- if (daLiPostojiUListi(*glava, matrica[i][j]) == 0) {
- ubaciDaOstaneSortiranaOpadajuce(glava, matrica[i][j]);
- }
- }
- }
- }
- void prikazNiza(int niz[], int n) {
- for (int i = 0; i < n; i++)
- {
- printf("%d ", niz[i]);
- }
- printf("\n");
- }
- int vratiNajveci(int niz[], int n) {
- int temp = 0;
- int max = 0;
- for (int i = 0; i < n; i++)
- {
- int zbir = zbirCifaraBroja(niz[i]);
- if (zbir != 0 && niz[i] % zbir == 0) {
- if (temp == 0) {
- max = niz[i];
- temp++;
- }
- else {
- if (max < niz[i]) {
- max = niz[i];
- }
- }
- }
- }
- return max;
- }
- void daLiJeRastuci(int niz[], int n) {
- for (int i = 1; i < n; i++)
- {
- if (zbirCifaraBroja(niz[i - 1]) > zbirCifaraBroja(niz[i])) {
- printf("Niz nije rastuci. \n");
- return;
- }
- }
- printf("Niz je rastuci. \n");
- }
- void cifreRastuce4() {
- int x;
- printf("Unesite broj da proverite da li su cifre rastuce: ");
- scanf("%d", &x);
- int niz[50];
- int n = 0;
- while (x != 0) {
- int cifra = x % 10;
- niz[n++] = cifra;
- x = x / 10;
- }
- int temp = daLiJeOpadajuci(niz, n);
- if (temp) {
- printf("Cifre su rastuce\n");
- }
- else {
- printf("Cifre nisu rastuce\n");
- }
- }
- int daLiJeOpadajuci(int niz[], int n) {
- for (int i = 1; i < n; i++)
- {
- if (niz[i - 1] < niz[i]) {
- return 0;
- }
- }
- return 1;
- }
- void zadatak1(void) {
- int i = 0;
- int x;
- while (1) {
- printf("Unesite broj: ");
- scanf("%d", &x);
- i++;
- int zbir = zbirCifaraBroja(x);
- if (x % zbir == 0) {
- break;
- }
- }
- printf("Od unetih %d brojeva prvi broj koji je deljiv sa zbirom svojih cifara je broj %d\n", i, x);
- }
- int zbirCifaraBroja(int broj) {
- int zbir = 0;
- while (broj != 0) {
- int cifra = broj % 10;
- zbir += cifra;
- broj = broj / 10;
- }
- return zbir;
- }
- void zadatak2() {
- int n;
- printf("Unesite neparan broj: ");
- scanf("%d", &n);
- FILE* fajl = fopen("figura.txt", "w");
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n - i - 1; j++)
- {
- fprintf(fajl, " ");
- }
- for (int j = 0; j < 2 * i + 1; j++)
- {
- fprintf(fajl, "*");
- }
- fprintf(fajl, "\n");
- }
- for (int i = n - 2; i >= 0; i--)
- {
- // 1 0
- for (int j = 0; j < n - i - 1; j++)
- {
- fprintf(fajl, " ");
- }
- for (int j = 0; j < 2 * i + 1; j++)
- {
- fprintf(fajl, "*");
- }
- fprintf(fajl, "\n");
- }
- }
- void korisnickiMeni() {
- printf("#####################################################\n");
- printf("Student: MIHAILO_NISAVIC\n");
- printf("Broj indeksa: 0015/2018\n");
- printf("Predmet: Programiranje 1\n");
- printf("#####################################################\n");
- char odgovor[5] = "ne";
- do {
- printf("1. Pokreni zadatak 1\n");
- printf("2. Pokreni zadatak 2\n");
- printf("3. Pokreni zadatak 3\n");
- printf("0. Izlazak iz programa (da)\n");
- int x;
- printf("Izaberite neku od opcija (0-3): ");
- scanf("%d", &x);
- getchar();
- switch (x) {
- case 1:
- zadatak1();
- break;
- case 2:
- zadatak2();
- break;
- case 3:
- zadatak3();
- break;
- case 0:
- printf("Da li ste sigurni da zelite da napustite program? ");
- gets(odgovor);
- }
- } while (!strcmp(odgovor, "da") == 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement