All pastes #799849 Raw Edit

Untitled

public text v1 · immutable
#799849 ·published 2007-11-27 22:19 UTC
rendered paste body
#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;
}