#include <stdio.h>
#include <stdlib.h>
#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;
}