Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klasse intstack

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
11.12.2003, 13:35 Uhr
~noob
Gast


Hi. Habe Klasse intStack, wie unten angegeben gelöst. Muß dieses Bsp jetzt aber erweitern, nur finde ich keinen richtigen Ansatz. Wäre nett, wenn mir jemand den Ansatz verraten könnte.


C++:
const int stacksize = 8;
class IntStack {
  int cont[stacksize];  
  int next;  // index nä. freies Element
public:
   IntStack();
   bool push(int);  // return true: Erfolg, false: Stack voll
   int top(); // vorher isEmpty() prüfen!  
   void pop();  
   bool isEmpty();
};

und

isEmpty
bool IntStack::isEmpty() {   return next == 0; }

pop
void IntStack::pop() {   if (next > 0) --next; }

push
bool IntStack::push(int value){  
if(next < stacksize) {     cont[next++] = value;   }
else return false;   return true; }

top
int IntStack::top() {   if (next > 0)     return cont[next-1];  
else     return -1; }


Muß jetzt Methoden erweitern:


C++:
bool IntStack::top(int * value) const;
bool IntStack::top(int & value) const;



die es dem Benutzer ersparen, vor jedem Aufruf der Methode top die Methode isEmpty() aufrufen zu müssen.
Wenn (mindestens) ein Element am Stack liegt, sollen die Methoden den Wert des obersten Elements über den Parameter value zurückgeben; die Methode soll als Funktionswert true liefern. Ist der Stack aber leer, soll value unverändert bleiben und die Methode false zurückliefern. Verstecken Sie die ursprüngliche top Methode vor dem unbedarften User, so daß nur mehr die beiden neu definierten Methoden außerhalb der Klasse bekannt sind. Schreiben Sie ein Hauptprogramm, mit dem Sie beide Methoden testen können.


Bearbeitung von Pablo:


WIESO BENUTZT DENN HIER KEINER DIE CPPs TAGs


Dieser Post wurde am 11.12.2003 um 14:29 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.12.2003, 13:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na du musst halt die beiden Metohden implementieren

als erstes scheckst du mit isEmpty ab ob stack leer ist, wenn ja return false;
an sonsten weist du value den wert mit der vorher implementierten top funktion zu und return true (einmal halt als referenz und einmal als pointer) dann noch die alte top-funktion als private deklarieren und fertig
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.12.2003, 15:07 Uhr
~noob
Gast


pointer und referenz, ist mir leider zu hoch. kleiner ansatz vielleicht wie das dann aussieht?

pointer ist doch das, wo man mit addressen und werten arbeitet?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.12.2003, 15:10 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Lies mal hier Post003
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.12.2003, 16:43 Uhr
ao

(Operator)



Zitat:
~noob postete
pointer und referenz, ist mir leider zu hoch

Solltest du dringend nachholen, wenn du schon dabei bist, Stack-Klassen zu bauen. Ist elementares Grundverständnis. Ohne solches Wissen kriegst du beim Programmieren kein Bein auf die Erde.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.12.2003, 18:04 Uhr
~noob
Gast


Wieso funktioniert in meiner main 'queue.pop() << "\n"; nicht?


C++:
#include<iostream.h>

const int stacksize = 8;

class intStack {
  int cont[stacksize];  
  int next;  // index nä. freies Element

public:
   intStack();
   bool push(int);  // return true: Erfolg, false: Stack voll
   int top(); // vorher isEmpty() prüfen!  
   int pop();  
   bool isEmpty();
};


//#include<iostream.h>
//#include"intStack.h"

intStack::intStack() {
next = 0; }

bool intStack::isEmpty() {   return next == 0; }

int intStack::pop() {   if (next > 0) --next; }

bool intStack::push(int value){  
if(next < stacksize) {     cont[next++] = value;   }
else return false;   return true; }


int intStack::top() {   if (next > 0)     return cont[next-1];  
else     return -1; }


#include<iostream.h>
//#include"intStack.h"

int main(){
int z,x;
  cin >> z;
  cin >> x;
  intStack queue;
  queue.push(z);
  queue.push(x);
  cout << queue.top() << "\n";
  queue.pop() << "\n";
  cout << queue.top() << "\n";
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.12.2003, 18:32 Uhr
~noob
Gast


sorry, dummer denkfehler
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.12.2003, 12:35 Uhr
~noob
Gast


probiere das jetzt schon seit tagen, aber irgendwie versteh ich nicht so ganz, wie das dann aussieht;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.12.2003, 13:16 Uhr
virtual
Sexiest Bit alive
(Operator)


Was ist denn das Problem?
Beim pop ist einfach das Problem, daß nichts zurückgibt (return fehlt), obwohl es als int deklariert ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.12.2003, 13:18 Uhr
noob



wie meine implementierung und dann die main aussieht. hab schon sooo viel probiert, nur klappts leider nie
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: