#include #include #define MAXSTOG 10 /* prototipovi fja */ int okreni_string(char *str, char *stog, int n); int dodaj (char *stavka, char stog[], int n, int *vrh); int skini (char *stavka, char stog[], int *vrh); int main () { /* deklaracija stoga i stringa */ char STOG1[MAXSTOG]; char STRING[MAXSTOG+1]; /* unos stringa */ printf("Unesi string: "); fgets(STRING, sizeof(STRING), stdin); STRING[strlen(STRING)-1]='\0'; /* poziv fje za okretanje stringa */ okreni_string(STRING, STOG1, MAXSTOG); printf("%s \n", STRING); getche(); return 0; } /* pocetak funkcije za dodavanje na stog*/ int dodaj (char *stavka, char stog[], int n, int *vrh) { if (*vrh >= n-1) return 0; /* ako je stog pun izadi */ (*vrh)++; /* pomakni se za jednu adresu u desno (na sljedeci element stoga */ stog[*vrh] = *stavka; /* prebaci sadrzaj procitane stavke u na stog */ return 1; } /* pocetak funkcije za skidanje sa stoga */ int skini (char *stavka, char stog[], int *vrh) { if (*vrh < 0) return 0; /* skidaj sve dok nije kraj stoga */ *stavka = stog[*vrh]; /* premjesti sadrzaj iz trenutne pozicije u stogu u stavku */ (*vrh)--; /* pomakni se za jednu adresu unazad (na podatak prije u stogu) */ return 1; } int okreni_string(char *str, char stog[], int n) { int i=0; char *pom; int vrh; vrh = -1; /* postavljamo index vrha stoga na -1 sto oznacava da je prazan */ pom=str; /* koristimo dodatni string kako ne bi izgubili original */ /* sve dok ne ispraznis sting pisi u stog */ while (*pom) { if(dodaj(pom, stog, MAXSTOG, &vrh)==0) return 0; pom++; } /* sve dok ne ispraznis stog pisi u string */ while((vrh)>=0) if(skini(&str[i++], stog, &vrh)==0) return 0; }