Hallo, ich habe folgende Aufgabe:
Programmieren Sie einen Stapel (Stack) für Ganzzahlwerte (int). Stapel bedeutet, das
zuletzt eingefügte Element wird zuerst entfernt. Verwenden Sie ein int Feld konstanter
Länge. Beginnen Sie mit dem Einfügen an der Position 0 des int Feldes. Eine Variable zur Verwaltung der aktuellen Anzahl Elemente im Stack genügt. Dadurch ist die
Einfügeposition und das als erstes heraus zu nehmende Element bestimmt.
Benutzen Sie folgendes Menue:
i - insert entry
d - delete entry
c - clear (delete all entries)
p - print all entries
Zudem muss ich sagen, dass ich noch nicht allzuviel Erfahrung in C++ mitbringe.
Kopiert hier einfach den Code heraus. Ist sonst zu unübersichtlich. Übringens habe ich einige Zweifel an meiner Lösung.
Ich habe die Aufgabe so gelöst:
// Aufgabenblatt 6 Aufgabe 1
#include <iostream>
using namespace std;
void menue(void); // Funktion zur Darstellung des Menüs
void eingabe(void); // Funktion zur Zuweisung der Eingaben des Benutzers anhand des Menüs
void insert(void); // Funktion zur Speicherung der Eingabe
void del(void); // Funktion zum Löschen der letzten Eingabe
void clear(void); // Funktion zum Löschen aller Eingaben
void print(void); // Funktion zur Ausgabe der kompletten Liste
void exit(void); // Funktion zum verlassen des Programms
char c;
int stack[10], pos=0, wert, i; // stack[10] = Ein Stapel, welcher eine EIngabe von 10 Zahlen ermöglicht
int main()
{
do
{
menue(); // Aufruf der Funktion zur Anzeige des Menues
eingabe(); // Aufruf der Funktion zur Eingabe von Werten
}
while(char(c)!='e'); // solange ein Buchstaben ausser "e" eingegeben wird, wird das Programm nicht verlassen
system("PAUSE");
return 0;
}
void menue(void)
{
cout<<" Bitte waehlen Sie aus: "<<"\n";
cout<<" i - insert entry "<<"\n";
cout<<" d - delete entry "<<"\n";
cout<<" c - clear (delete all entry) "<<"\n";
cout<<" p - print all entries "<<"\n";
cout<<" e - exit "<<"\n";
cout<<" Ihre Wahl: ";
cin>>c;
}
void eingabe(void)
{
switch(c) // durch cin>>c wird an dieser Stelle, je nach dem was man auswählt, der nächste Funktionsaufruf bestimmt
{
case 'i' : insert(); break;
case 'd' : del(); break;
case 'c' : clear(); break;
case 'p' : print(); break;
case 'e' : exit(); break;
default : cout<<" unbekannte Eingabe!!"<<"\n"<<"\n"; break; // Wenn etwas anderes ausser "i,d,c,p oder e" eingegeben wird ist es eine unbekannte Eingabe.
}
}
void insert(void)
{
if(pos<=9) // Solange die Position kleiner oder gleich ist als 9 ist eine Eingabe von Werten möglich
{
cout<<" Bitte einen Wert beliebigen Wert eingeben: ";
cin>>wert;
stack[pos]=wert; // Zuweisung von "wert" in den Stapel (bzw. Liste) an einer bestimmten Position
cout<<" Wert <<< "<<wert<<" >>> auf Position <<< "<<pos<<" >>> hinzugefuegt. "<<"\n";
pos++;
}
else
{
cout<<" >>> Die Liste ist voll <<< "<<"\n";
}
}
void del(void)
{
pos--;
cout<<" >>> Letzte Eingabe geloescht! <<< "<<"\n";
print();
}
void clear(void)
{
do
{
pos--;
}
while(pos>0);
cout<<" >>> Alles geloescht! <<< "<<"\n";
}
void print(void)
{
if(pos==0)
{
cout<<" >>> Liste ist Leer!! <<< "<<"\n";
}
for(i=0;i<pos;i++) // Liste von Position 0 bis 9 (10 Werte).
{
cout<<" Eintrag an Position <<< "<<i<<" >>> ist der Wert: <<< "<<stack<<" >>>"<<"\n";
}
}
void exit(void)
{
cout<<" >>> Beenden <<< "<<"\n";
}
Programmieren Sie einen Stapel (Stack) für Ganzzahlwerte (int). Stapel bedeutet, das
zuletzt eingefügte Element wird zuerst entfernt. Verwenden Sie ein int Feld konstanter
Länge. Beginnen Sie mit dem Einfügen an der Position 0 des int Feldes. Eine Variable zur Verwaltung der aktuellen Anzahl Elemente im Stack genügt. Dadurch ist die
Einfügeposition und das als erstes heraus zu nehmende Element bestimmt.
Benutzen Sie folgendes Menue:
i - insert entry
d - delete entry
c - clear (delete all entries)
p - print all entries
Zudem muss ich sagen, dass ich noch nicht allzuviel Erfahrung in C++ mitbringe.
Kopiert hier einfach den Code heraus. Ist sonst zu unübersichtlich. Übringens habe ich einige Zweifel an meiner Lösung.
Ich habe die Aufgabe so gelöst:
// Aufgabenblatt 6 Aufgabe 1
#include <iostream>
using namespace std;
void menue(void); // Funktion zur Darstellung des Menüs
void eingabe(void); // Funktion zur Zuweisung der Eingaben des Benutzers anhand des Menüs
void insert(void); // Funktion zur Speicherung der Eingabe
void del(void); // Funktion zum Löschen der letzten Eingabe
void clear(void); // Funktion zum Löschen aller Eingaben
void print(void); // Funktion zur Ausgabe der kompletten Liste
void exit(void); // Funktion zum verlassen des Programms
char c;
int stack[10], pos=0, wert, i; // stack[10] = Ein Stapel, welcher eine EIngabe von 10 Zahlen ermöglicht
int main()
{
do
{
menue(); // Aufruf der Funktion zur Anzeige des Menues
eingabe(); // Aufruf der Funktion zur Eingabe von Werten
}
while(char(c)!='e'); // solange ein Buchstaben ausser "e" eingegeben wird, wird das Programm nicht verlassen
system("PAUSE");
return 0;
}
void menue(void)
{
cout<<" Bitte waehlen Sie aus: "<<"\n";
cout<<" i - insert entry "<<"\n";
cout<<" d - delete entry "<<"\n";
cout<<" c - clear (delete all entry) "<<"\n";
cout<<" p - print all entries "<<"\n";
cout<<" e - exit "<<"\n";
cout<<" Ihre Wahl: ";
cin>>c;
}
void eingabe(void)
{
switch(c) // durch cin>>c wird an dieser Stelle, je nach dem was man auswählt, der nächste Funktionsaufruf bestimmt
{
case 'i' : insert(); break;
case 'd' : del(); break;
case 'c' : clear(); break;
case 'p' : print(); break;
case 'e' : exit(); break;
default : cout<<" unbekannte Eingabe!!"<<"\n"<<"\n"; break; // Wenn etwas anderes ausser "i,d,c,p oder e" eingegeben wird ist es eine unbekannte Eingabe.
}
}
void insert(void)
{
if(pos<=9) // Solange die Position kleiner oder gleich ist als 9 ist eine Eingabe von Werten möglich
{
cout<<" Bitte einen Wert beliebigen Wert eingeben: ";
cin>>wert;
stack[pos]=wert; // Zuweisung von "wert" in den Stapel (bzw. Liste) an einer bestimmten Position
cout<<" Wert <<< "<<wert<<" >>> auf Position <<< "<<pos<<" >>> hinzugefuegt. "<<"\n";
pos++;
}
else
{
cout<<" >>> Die Liste ist voll <<< "<<"\n";
}
}
void del(void)
{
pos--;
cout<<" >>> Letzte Eingabe geloescht! <<< "<<"\n";
print();
}
void clear(void)
{
do
{
pos--;
}
while(pos>0);
cout<<" >>> Alles geloescht! <<< "<<"\n";
}
void print(void)
{
if(pos==0)
{
cout<<" >>> Liste ist Leer!! <<< "<<"\n";
}
for(i=0;i<pos;i++) // Liste von Position 0 bis 9 (10 Werte).
{
cout<<" Eintrag an Position <<< "<<i<<" >>> ist der Wert: <<< "<<stack<<" >>>"<<"\n";
}
}
void exit(void)
{
cout<<" >>> Beenden <<< "<<"\n";
}