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;
}
}
}