[C++] Stack und Ausgabeproblem

untread

Erfahrenes Mitglied
Hi, ich habe ein Programm geschrieben, dass eine Zahl und einen Char mittels Stack ablegen soll und dann mit POP wieder ausgibt, nur haut da irgendwas nicht hin, möglichweise irgend n Denkfehler mit der Typenvereibarung

PHP:
#include "stdio.h"


class stack
{
private:
	int count[5];
	int i;

public:
	stack();

	int push(int,char);
	int pop();
};

stack::stack()
{
	i=0;
}

int stack::push(int zahl, char name)
{
	if(i==5)
	{
		return 0;
	}
	count[i] = zahl;
	i++;
}

int stack::pop()
{
	if(i==0)
	{
		return 0;
	}
	i--;
	return count[i];
}

int main(int argc,char* argv[])
{
	stack stack;
	int i;

	stack.push(1,"harry");
	

	for(i=0;i<10;i++)
		printf("%s  %d\n", stack.pop());
	
	return 0;
}

vielleicht kann ja wer helfen, dürft eigentlich relativ einfach sein ;)

mfg Harry
 
int push(int,char);

Muss heißen:
Code:
int push(int,char*);
da du ja ne ganze Zeichenkette übergibst, wobei die Übergabe dieser Kette
für mich wenig Sinn macht da es ja ein int stack ist...

Code:
for(i=0;i<10;i++)
        printf("%s  %d\n", stack.pop());

Muss heißen:

Code:
for(i=0;i<10;i++)
        printf("%d\n", stack.pop());

Wenn du schon C++ programmierst verwende iostream und cout, dann brauchst
du dich nicht mehr um die Typformatierung zu kümmern:

Code:
for(i=0;i<10;i++)
        cout <<  stack.pop() << endl;


Code:
int stack::pop()
{
    if(i==0)
    {
        return 0;
    }
    i--;
    return count[i];
}
}

Dieses return 0 is eigentlich eher schlecht, weil ein int Stack auch 0en enthalten kann;)...

Ein nächster Schritt könnte auch sein, das du den Keller vom statischen (da er
ja nur maximal aus 5 Elementen bestehen kann) ins dynamische portierst, und ihn
damit zum Keller mit potentiell unendlichen Speicher mittels Zeigerarithmetik
machen kannst.

Nur mal so als ein paar Tips.. ;)

Gruß

RedWing
 
oke danke mal ;)

naja printf benutze ich selber sehr sehr ungern aber unser Leherer meint wir müssten das benutzen, leider ;) deswegen üb ich halt gleich mit dem
 
Zurück