C++ - opis programu


(Shakadima) #1

potrzebuje pomocy od ludzi znajacych sie na c++. Mianowicie mam program i musze go opisac komentarzami, tak jak jest to zrobione w srodku. Tak mniej wiecej kazda linijka musi byc opisana. I teraz pada moja prosba, czy moglby ktos sprawdzic to co napisalem i jak by mogl to dopisac cos do reszty pustych miejsc :). Program to kalkulator dzialajacy w odwrotnej notacji polskiej:

kod:

#include

#include

#include

typedef long danetyp ;

class stos{ // towrze klase stos

struct wezel // tworze strukture wezel

{

danetyp dane;

wezel *poprzedni;

wezel(danetyp x, wezel*p)

{

dane = x;

poprzedni = p;

}

}* top; //obiekt typu wezel, wezel* top;

public:

stos()

{

top = 0;

}

bool empty();

void wloz(danetyp x);

danetyp zdejmij();

~stos()

{

wezel *buf;

while(top !=0)

{

buf = top;

top = top ->poprzedni;

delete buf;

}

}

};

void stos::wloz(danetyp x)

{

wezel * temp = new wezel( x,top); //wystarczy to zamiast tego ponizej

top = temp; //aktualizacja top

}

danetyp stos::zdejmij()

{

danetyp y; //element do zdjecia ze stosu

wezel *pom ; //

pom = top->poprzedni; //przypisanie do w wskazania na element,ktory zaraz usune

y = top->dane; //y= ostani element (pierwszy do zdjecia)

delete top; // kasuje ostatni(pierwszy) element stosu

top = pom; //przypisuje przedostaniemu elementowi TOP

return y; //zwracam ostani elemnt stosu

}

bool stos::empty() // bool - daje prawde lub falsz

{

if (top == 0) //sprawdzam czy stos jest pusty

return 1; //jesli tak zwracam TRUE

else //jestli nie

return 0; //zwracam FALSE

}

int main(int argc, char **argv)

{

stos s;

char c=0; // deklaruje zmienna char

cout << “wprowadz znaki:”<< endl;

for ( ; ; )

{

int w; // deklaruje zmienna tyou int

cin >> “Program zaliczeniowy : Kalkulator dzialajacy w RPN (ONP)\n”;

cin >> c; // pobieram ciag znakow z klawiatury

switch © // fukcja switch

{

case ‘0’:

case ‘1’:

case ‘2’:

case ‘3’:

case ‘4’:

case ‘5’:

case ‘6’:

case ‘7’:

case ‘8’:

case ‘9’:

w = c - ‘0’; //wartosc,roznica miedzy char i ascii

s.wloz(w); // wkladam elementy na stos

break;

case ‘+’: //jezeli pojawi sie znak “+”

w = s.zdejmij();

w += s.zdejmij();

s.wloz(w);

break;

case ‘-’:

w = s.zdejmij();

w -= s.zdejmij();

s.wloz(w);

break;

case ‘*’:

w = s.zdejmij();

w *= s.zdejmij();

s.wloz(w);

break;

case ‘/’:

w = s.zdejmij();

w /= s.zdejmij();

s.wloz(w);

break;

case ‘=’:

cout << “wynik” << endl;

cout << s.zdejmij()<< endl; //zdejmujemy elementy ze stosu

system (“pause”);

return 0;

}

}

}