[C++] Implementacja stosu.

Freddy Eliot
Użytkownik
Użytkownik
Posty: 402
Rejestracja: 11 kwie 2011, o 19:51
Płeć: Kobieta
Lokalizacja: Białystok
Podziękował: 26 razy
Pomógł: 88 razy

[C++] Implementacja stosu.

Post autor: Freddy Eliot »

Wiem, że nie jest to zbytnio związane z matematyką, ale liczę na pomoc. Otóż udało mi się utworzyć stos i wszystko byłoby cacy gdyby nie to, że metoda empty nie chce mi nic zwracać. Dlatego byłabym zobowiązana gdyby ktoś zerknął i powiedział, co jest nie tak.
Oto kod:

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>
#include <stack>
using namespace std;

struct Element
{
 int dane;
 Element *nast;
};

void push(Element **S)
{
   Element *temp=new Element;
   cin >> temp->dane;
   temp->nast=*S;
   *S=temp;
}

void top(Element **S)
{
   if (*S)
   {
   Element *temp=*S;
   *S=(*S)->nast;
   cout << temp->dane << endl;
   delete temp;
   }
}

int pop(Element *S)
{
    Element *temp;
    if (S!=NULL)
    {
     return S-> dane;
    }
}

int empty(Element *S)
       {
       if( S == 0 ) 
	   cin >> "Stos jest pusty";
	   else
	   cin >> "Stos nie jest pusty";
	return 0;
      }

int main()
{
    Element *S=NULL, *temp = NULL;
    char warunek;
   while (cin >> warunek)
    {
    switch (warunek)
           {
           case 'd':
               push(&S);
               break;
           case 't':
               top(&S);
               break;
           case 'u':
               pop(S);
               break;
           case 'e':
               empty(S);
               break;
           }
   }

    system("PAUSE");
    return 0;
}
Ostatnio zmieniony 24 lis 2011, o 20:56 przez Afish, łącznie zmieniany 2 razy.
Powód: Temat umieszczony w złym dziale. Skąd Ci to przyszło do głowy? Wielcy matematycy???
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[C++] Implementacja stosu.

Post autor: adambak »

Freddy Eliot pisze:

Kod: Zaznacz cały

int empty(Element *S)
       {
       if( S == 0 ) 
	   cin >> "Stos jest pusty";
	   else
	   cin >> "Stos nie jest pusty";
	return 0;
      }
tu jest pomyłka.. cout służy do wypisywania.. ale sądząc po reszcie kodu to z roztargnienia chyba..

-- 24 lis 2011, o 21:56 --

a tak poza tym zastanów się nad doborem typu tej funkcji empty.. bo w tej chwili zawsze zwracasz zero..
Freddy Eliot
Użytkownik
Użytkownik
Posty: 402
Rejestracja: 11 kwie 2011, o 19:51
Płeć: Kobieta
Lokalizacja: Białystok
Podziękował: 26 razy
Pomógł: 88 razy

[C++] Implementacja stosu.

Post autor: Freddy Eliot »

Przepraszam, pomyliłam dział troszkę niechcący. I dziękuję Teraz działa. W tej chwili wypisuje mi to co chciałam. Jakie 0? Właśnie uświadomiłam sobie, że z metodami pop i top też jest coś nie tak.
lukasz93a
Użytkownik
Użytkownik
Posty: 118
Rejestracja: 31 sty 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 14 razy
Pomógł: 16 razy

[C++] Implementacja stosu.

Post autor: lukasz93a »

Freddy Eliot pisze:Jakie 0?
W sensie, że funkcja empty powinna być typu void.
Freddy Eliot
Użytkownik
Użytkownik
Posty: 402
Rejestracja: 11 kwie 2011, o 19:51
Płeć: Kobieta
Lokalizacja: Białystok
Podziękował: 26 razy
Pomógł: 88 razy

[C++] Implementacja stosu.

Post autor: Freddy Eliot »

Dlaczego? Przecież empty ma sprawdzić, czy stos jest pusty i zwrócić 1 jeśli jest, a 0 jeśli nie jest.
lukasz93a
Użytkownik
Użytkownik
Posty: 118
Rejestracja: 31 sty 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 14 razy
Pomógł: 16 razy

[C++] Implementacja stosu.

Post autor: lukasz93a »

Muszę cię rozczarować, ale tak nie jest.

Funkcja sprawdza czy stos jest pusty, ale wynik tego sprawdzenia wypisuje na ekranie. Wartość zwracana wynosi zawsze 0, niezależnie czy stos jest pełny czy pusty.

Oto poprawny zapis:

Kod: Zaznacz cały

int empty(Element *S)
{
    if(S == 0)
    { 
        cin >> "Stos jest pusty";
        return 1;
    }
    else
    {
        cin >> "Stos nie jest pusty";
        return 0;
    }
}
Choć i w tym wypadku optymalnym typem byłby bool.
Freddy Eliot
Użytkownik
Użytkownik
Posty: 402
Rejestracja: 11 kwie 2011, o 19:51
Płeć: Kobieta
Lokalizacja: Białystok
Podziękował: 26 razy
Pomógł: 88 razy

[C++] Implementacja stosu.

Post autor: Freddy Eliot »

Mój świat teorii na temat programowania legł w gruzach. Ale dziękuję. Wkleiłam to to i nie działa.
lukasz93a
Użytkownik
Użytkownik
Posty: 118
Rejestracja: 31 sty 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 14 razy
Pomógł: 16 razy

[C++] Implementacja stosu.

Post autor: lukasz93a »

Zapomniałem zmienić cin na cout.

Kod: Zaznacz cały

int empty(Element *S)
{
    if(S == 0)
    { 
        cout << "Stos jest pusty";
        return 1;
    }
    else
    {
        cout <<  "Stos nie jest pusty";
        return 0;
    }
}
ODPOWIEDZ