Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: petrjah2 23. 03. 2012, 22:12:26
-
Ahoj, potřeboval v céčku napsat algoritumus
Program postupně bude brát slova ze vstupu.
Pokud načetl číslo, přidá jej na vrchol zásobníku.
Pokud načetl operátor, vezme dvě čísla z vrcholu zásobníku, aplikuje na ně načtený operátor a výsledek uloží zpět na zásobník.
V C++ je vrchol zásobníku pop(). Jak se berou čísla z vrcholu zásobníku jen v C? Děkuji
-
Cau, C-cko v standarde afaik nema implementovane funkcie na priame ovladanie zasobniku z tvojho programu (ak ti ako zasobnik nestaci volanie funkcii). Mas ale pointery (napr. int *pcislo) a structy (struct cislodalsi { int cislo; struct cislodalsi *next; };), vdaka comu si mozes sam (pomerne lahko) implementovat zasobnik.
-
V C++ je vrchol zásobníku pop(). Jak se berou čísla z vrcholu zásobníku jen v C? Děkuji
Úplně stejně jako v C++, jen si tu funkci pop() budeš muset sám napsat.
-
Řekl bych že to nemělo být myšlené tak, aby pracoval přímo se zásobníkem procesoru, ale že ten program má používat svůj vlastní zásobník. Nepřipadá mi jako dobrý nápad míchat zadávaná čísla a návratové adresy... ;-)
-
Řekl bych že to nemělo být myšlené tak, aby pracoval přímo se zásobníkem procesoru, ale že ten program má používat svůj vlastní zásobník. Nepřipadá mi jako dobrý nápad míchat zadávaná čísla a návratové adresy... ;-)
Už bych to nechlastal být tebou... ;D
-
Zasobnik pro Cecko je v hlavicce sys/queue.h, prectete si man queue, tam je vse popsane.
-
Zasobnik pro Cecko je v hlavicce sys/queue.h, prectete si man queue, tam je vse popsane.
Az na to, ze sys/queue.h nie je v norme C99 a dokonca ani v POSIX-e. Takze nenazyval by som to "zasobnik pre Cecko"...
-
ucitelovi slo o princip, takze si udelej treba nejaky linked list ktery reprezentuje zasobnik, pak naimplementuj funkce push, pop a pripadne dalsi operace.
napriklad jak to funguje v programovacim jazyku postscript :-)
-
Az na to, ze sys/queue.h nie je v norme C99 a dokonca ani v POSIX-e. Takze nenazyval by som to "zasobnik pre Cecko"...
Praxi mam overeno, ze dana hlavicka je na linuxu, solarisu, macosu, freebsd (gcc, icc) a widnows (gcc, ms vis. stud.) a proto to tak s klidnym svedomim nazivam.
-
Přesně tak, pokud nemáš využít sys/queque.h, budeš si muset implementovat přímo zásobník sám. Doporučuji si udělat:
typedef struct lifo
{
int cislo;
struct lifo *next;
} LIFO;
LIFO *first;
A napsat si funkce, které ho ovládají. Zapomněl jsem při psaní, co se do něho mělo ukládat, takže akorát změň to "int cislo" na něco, co je dle zadání ;) ;) ;)
Obecně si můžeš najít nějaký zřetězený seznam (klidně i obousměrně) a odkoukat to tam, zásobník je jednodušší (páč neřešíš obousměrné vztahy, jen přendaváš prvního ;) ;))
-
Takto by mohla vyzera funkcia na pridavanie prvku na zaciatok ;)
Az by si mal nejake otazky tak sa pytaj..
struct Item* push_front(struct Item* begin, int value)
{
struct Item* novy = (struct Item*) malloc (sizeof(struct Item));
novy->hodnota = value;
novy->next = begin;
begin = novy;
return begin;
}