Struktur mit Feld (Zugriff/Löschen/Ändern von per User gewähltem bestimmten Wert,
-
Hallo zusammen,
ich muss für mein Studium eine Aufgabe abschließen und komme einfach nicht mehr weiter..
Ziel:
Das Ziel ist es ein simples Lagerverwaltungsprogramm zu erstellen, welches x-Kisten abspeichern kann und deren Abmessungen speichert
Folgendes soll als Funktion definiert werden:
Einlesen/Ändern/Löschen/Anzeigen/Liste DetailsWas muss vom User gemacht werden:
- Über ein Hauptmenü ändert der User den Zugriff auf die Strukturvariable (Einlesen/Löschen/Ändern/Anzeigen/Liste Details)
- Der Enduser gibt für Kiste (x) die jeweilige Länge/Höhe/Breite an
- Der Enduser kann sich eine Kiste der Strukturvariable auswählen, diese löschen, Daten ändern oder einfach anzeigen lassen.
Mein Problem:
Ich komme einfach nicht drauf, wie ich in meinem Code die Kiste (x) per cin >> auswählen kann, um Werte anzuzeigen, zu löschen oder zu ändern.
Die Struktur ist Kiste, Strukturvariable Lagerraum[50]. Wie kann ich über eine Funktion den Index abfragen und dann entsprechend verweisen? Ich sehe grad den Wald vor lauter Bäumen nicht...CODE BEI PASTEBIN zur einfacheren Veranschaulichung:
https://pastebin.com/8XMPJiQGusing namespace std; struct kiste { int laenge; int breite; int hoehe; int nummer; }; kiste einlesen(int Kiste) { kiste aKiste; cout << "Bitte gib die Hoehe der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.hoehe; cout << "Bitte gib die Laenge der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.laenge; cout << "Bitte gib die Breite der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.breite; cout << '\n'; return aKiste; } int Volumen(kiste aKiste) { int Volumenwert; Volumenwert = aKiste.hoehe * aKiste.laenge * aKiste.breite; return Volumenwert; } /* kiste aendern(int Kiste) { kiste aKiste; cout << "Bitte gib die neue Hoehe der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.hoehe; cout << "Bitte gib die neue Laenge der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.laenge; cout << "Bitte gib die neue Breite der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.breite; cout << '\n'; return aKiste; } int Ansicht(kiste aKiste) { for (int i = 0; i < 50; ++i) { cout << aKiste.nummer[i] << " "; cout << "Bitte wählen Sie die zu ändernde Kiste aus:\n"; cin >> aKiste.nummer[i-1]; return aKiste; } kiste Ansicht(int Kiste) { kiste aKiste; cout << "Bitte gib die neue Hoehe der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.hoehe; cout << "Bitte gib die neue Laenge der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.laenge; cout << "Bitte gib die neue Breite der Kiste Nummer "<< Kiste << " ein:" << endl; cin >> aKiste.breite; cout << '\n'; return aKiste; } */ int main() { char Auswahl; cout << "Waehlen Sie bitte den gewuenschten Menuepunkt:\n"; cout << '\n'; cout << "a) Datensatz einlesen\n"; cout << "b) Datensatz loeschen\n"; cout << "c) Datensatz aendern\n"; cout << "d) Datensatz Ansicht\n"; cout << "e) Datensatz als Liste einsehen\n"; cout << '\n'; cin >> Auswahl; switch(Auswahl) { case 'a': case 'A': cout << "Sie haben DATEN EINLESEN gewaehlt: \n"; einlesen(Auswahl); break; case 'b': case 'B': cout << "Sie haben DATEN LOESCHEN gewaehlt: \n"; loeschen(Auswahl); break; case 'c': case 'C': cout << "Sie haben DATEN AENDERN gewaehlt: \n"; aendern(Auswahl); break; case 'd': case 'D': cout << "Sie haben DATEN ANSICHT gewaehlt: \n"; Aendern(Auswahl); break; case 'e': case 'E': cout << "Sie haben DATEN AUFLISTUNG gewaehlt: \n"; break; default: cout << "Sie haben keine gültige Auswahl getroffen!:\n"; } kiste Lagerraum[50]; for (int schleife = 0; schleife <= 49; schleife++) // Abmessungen einlesen Lagerraum[schleife] = einlesen(schleife+1); for (int schleife =0; schleife <= 49; schleife++) // Volumen der Kisten berechnen cout << "Das Volumen von Kiste " << schleife+1 << " ist:" << Volumen (Lagerraum[schleife]) << '\n'; return 0; }Ich hoffe der Code ist nicht allzu wirr und ihr könnt mir den Stups in die richtige Richtung geben

Danke vorab!
-
int platz; cin>> platz;
-
@manni66
Hallo manni66,
Danke dir! Das sind ja die generellen Befehle eine Variable zu deklarieren und einzulesen.
Aber wie mache ich das mit einer Struktur bzw. der Strukturvariablen als array?
-
So kannst du doch dann mittels
Lagerraum[platz]auf eine einzelne Kiste zugreifen und z.B. perLagerraum[platz] = aendern(platz);die geänderten Daten zuweisen.
Besser wäre hier zwar mit Referenzen als Übergabeparameter zu arbeiten(kiste& aKiste), aber ich weiß nicht, ob du das schon gelernt hast.Außerdem ist die Reihenfolge in deiner
main-Funktion bisher noch falsch. Du zeigst erst das Menü an und erst danach legst du dieLagerraum-Variable an, d.h. bisher kannst du im Menü gar nicht darauf zugreifen.
Außerdem solltest du das Menü solange anzeigen lassen, bis der Anwender explizit das Programm schließen möchte (mit z.B.'x'oder'q').PS: Dein Thema ist im falschen Unterforum (sollte nach Standard C++).