Programmieransatz für erstellung einer Menükarte
-
HI asdfasdf,
Danke für deine Antwort. Leider muss ich aber diese AUfzählungstypen verwenden und steh dabei immernoch auf dem Schlauch.
Gruß
schrödinger
-
Weißt du denn wie man diese definiert?
Oder kommst du nicht klar, wie man darüber iteriert? Entweder den Operator ++ dafür überladen oder aber einfach jeweils zurück auf einen int casten.
Und für die Ausgabe einfach ein statisches String-Array anlegen und benutzen.
-
Hi Th69,
also ich habe mir jetzt erstmal für jeden Bestandteil des menüs ein enum erstellt.
Bsp:
enum fleisch{Rind, Schwein, Huhn, Ente, Seelachs, Krabben, Tofu}; enum gemuese{Paprika, Bambus, Sprossen, Bohnen, Zuckerschoten, Pilze};und ab jetzt hänge ich.
-
Ein enum ist doch aber kein Auflistungstyp.
-
Hi,
in meinem Buch läuft enum aber unter Aufzählungstyp.
-
@inflames2K: Was verstehst du denn sonst unter einem Aufzählungstyp (enumerated type)?
@schrödinger: ein üblicher Trick bei enums besteht darin, als letztes Element ein MaxX zu benutzen, z.B.
enum fleisch { Rind, Schwein, Huhn, Ente, Seelachs, Krabben, Tofu, MaxFleisch };so daß man dann einfach mittels
for (int i = 0; i < MaxFleisch; ++i)darüber iterieren kann.
-
Hi,
so, jetzt habe ich ein Array namens fleisch mit den Werten von 0 bis 6 mittels der for-Schleife befüllen lassen. Das Array wird dabei ja nur mit der VAriablen i befüllt.
enum fleisch { Rind, Schwein, Huhn, Ente, Seelachs, Krabben, Tofu, Maxfleisch }; enum gemuese { Paprika, Bambus, Sprossen, Bohnen, Zuckerschoten, Pilze, Maxgemuese }; /*string fleisch[10] = {"Schwein", "Rind"}; string gemuese[10] = {"Paprika", "Pilze"}; */ const int max = 10; int fleisch[] = {0}; for (int i = 0; i < Maxfleisch; i++) { fleisch[i] = i; } return 0; }soweit so gut, jetzt würde ich das auch noch für die anderen Zutaten machen. Da habe ich nur dann am Ende das Problem, wie lasse ich mir denn die Namen der Zutaten ausgeben? Und eine Sinnvolle verknüfung ist mir auch noch nicht wirklich eingefallen.
Hat da jemand evtl. noch einen kleinen (oder auch gerne einen großen)
Tipp für mich?Danke euch schon mal
-
Ich glaube:
Namen ausgeben geht mit enum nicht. Das war das, worauf flames hinauswollte. Enum ist zwar ein aufzaehlungstyp, aber nicht in dem sinne. Bei enum wird begriffen einfach eine zahl zugeordnert, die sich pro begriff um 1 steigert, es sei denn man gibt den wett manuell ein.
/ichglaube
-
Also ist enum hierfür der falsche Aufzählungstyp? Dann bin ich jetzt maximum verwirrt.
-
jo enum zu verwenden ist hier falsch bzw. nicht optimal. wenn man unbedingt auf enumatoren besteht muss man sich maps machen a la "std::map< <enum-typ>, std::string>"
dann lieber doch der direkte weg über einen "std::vectorstd::string" und es so implementieren wie ich es gezeigt habe.
-
schrödinger schrieb:
wie lasse ich mir denn die Namen der Zutaten ausgeben?
#include <iostream> #include <string> #include <vector> using namespace std; int main() { enum fleisch {Rind, Schwein, Huhn, Ente, Seelachs, Krabben, Maxfleisch}; char const * const Fleisch[] = {"Rind", "Schwein", "Huhn", "Ente", "Seelachs", "Krabben"}; cout << Fleisch[Rind] << " oder " << Fleisch[Ente] << "?\n"; }
-
Ja genau, so meinte ich das - und das einfach nur noch in die 4 verschachtelten Schleifen packen und fertig

-
Hi,
Danke für eure super Hilfe, werde es später mal probieren. Noch eine Frage an Th69, verstehe ich deinen Pseudocode so richtig, dass bei jedem Durchgang ein Wert aus fleisch genommen wird und dann in eine Variable g gespeichert wird?
-
@Caligulaminus
hoffentlich hast du das nicht ernst gemeint.
-
-
Nathan schrieb:
asdfasdf schrieb:
@Caligulaminus
hoffentlich hast du das nicht ernst gemeint.Wo ist das Problem?
der te wollte alle permutationen ausgeben. wieso macht man nicht einfach einen std::vectorstd::string für jede kategorie? in seinem konkreten listing zu bemängeln wäre:
-alle fleischarten doppelt geschrieben
-c-strings
-wer Rind schreiben kann kann auch "Rind" schreiben
-
asdfasdf schrieb:
Nathan schrieb:
asdfasdf schrieb:
@Caligulaminus
hoffentlich hast du das nicht ernst gemeint.Wo ist das Problem?
der te wollte alle permutationen ausgeben. wieso macht man nicht einfach einen std::vectorstd::string für jede kategorie? in seinem konkreten listing zu bemängeln wäre:
-alle fleischarten doppelt geschrieben
-c-strings
-wer Rind schreiben kann kann auch "Rind" schreibenSeine Antwort bezog sich auf die Frage: Wie lass ich mir die Namen eines enums ausgeben. Dass ist die naheliegendste Lösung.
(etwaige #-Tricks außen vorgelassen)
-
Also leider bin ich immernoch recht verwirrt von dieser Aufgabe, aber bin schon DAnk eureer Hife etwas weiter. Was mich jetzt auch noch mal interessieren würde ist,
was bedeutet denn das hier?
char const * const Fleisch[]....
-
Um das Menü authentischer zu machen fehlt noch die Option auf Hund
-
Das ist ein Zeiger auf ein char-Array. Also mehr oder weniger ein Dynamisches Array von Strings. An dieser Stelle wären Container besser. Oder gleich schon der Typ std::string