Array Auswerten und weiterverarbeiten
-
hi
bin ein absoluter Neuling was das Programmieren allgemein angeht
hab jetzt einfach mal angefangen ein kleines c++ Programm zu schreiben um einfach mal die Sprache zu benutzen.
Jetzt steh ich vor meinem ersten Problem auf das mir mein Toturial keine Antwort gibt
Möchte ein nach einer Auswahl ein Integer Array mit werten füllen :int Zutatenspeicher[100]; int ZS_Pos = 0; int Alkohol() { int Alc_Auswahl; cout << "geben sie die Vorhanden Spirituosen ein " <<endl; cout << "1. Vodka" <<endl; cout << "2. Weiser Rum" <<endl; cout << "3. Brauner Rum" <<endl; cout << "4. Gin" <<endl; cout << "5. Tequila" <<endl; cin >> Alc_Auswahl; switch (Alc_Auswahl) { case 1 : Zutatenspeicher[ZS_Pos] = 1; ZS_Pos++; break; case 2 : Zutatenspeicher[ZS_Pos] = 2; ZS_Pos++; break; case 3 : Zutatenspeicher[ZS_Pos] = 3; ZS_Pos++; break; case 4 : Zutatenspeicher[ZS_Pos] = 4; ZS_Pos++; break; case 5 : Zutatenspeicher[ZS_Pos] = 5; ZS_Pos++; break; default: cout << "ungueltige Eingabe"; main(); break; } return(0); }
kann mir jemand sagen wie ich jetzt das Array auf die Werte durchsuchen kann.
und mit diesen weiter arbeiten kann nach dem Schemawenn im Array irgendwo die Zahlen
5, 6, 2, 9, 1
Vorkommen mache das …danke schon mal im vorraus für die Hilfe
-
Informiere dich bitte erstmal über den Unterschied zwischen einem Array und... naja und keinem Array
. Vorher bringt alles weitere glaube ich sowieso nichts.
int Alc_Auswahl;
ist in jedem Fall kein Array.
-
das Array ist auch oben gepostet
int Zutatenspeicher[100]; int ZS_Pos = 0;
das unten ist die Funktion wo das Array gefüllt wird.
meine Frage richtet sich jetzt daran wie ich jetzt weiter machen muss um das gefüllte Array (int Zutatenspeicher[100];)
auszulesen und damit weiter zu arbeiten
-
Mein Fehler, sorry.
-
Ich gehe mal davon aus, dass du int Alkohol() mehrmals aufrufst, quasi maximal 100 mal bevor du ZS_Pos wieder zurück setzt.
Anonsten durchläufst du Zutatenspeicher zum Beispiel mit einer for Schleife und musst sie eben wieder mit einem switch case auswerten.
for(int i = 0; i < 100; i++) { switch(Zutatenspeicher[i]) { case 1: ... } }
Vorher solltest du das Array noch mit festen Werten initialisieren. Am besten natürlich Werte, die keiner Alkoholsorte entsprechen.
-
danke für die schnelle hilfe
eine elegantere methode gibt es nicht mit der es möglich ist direkt komplette
kobinationen abzufragen
wie 5, 6, 2, 9, 1sry wenn sich das jetzt etwas undankbar anhört.
will blos versuchen das programm etwas kompackter zu halten
wird ja doch jede menge text wenn du noch weitere abfragen wie diese hinzu kommenich erkläre vlt erstmal was das Programm am Ende können soll:
ich mixe gerne mal ein paar Cocktails zuhause und weil ich keine Lust habe aus meiner Rezeptliste immer rauszusuchen was mit meinen Zutaten möglich ist. Habe ich mir überlegt ich schreib ein kleines Konsolen Programm. In dem ich meine Zutaten eingebe und das Programm Spuckt mir dann die Namen der möglichen Cocktails raus.in meinem Array stehen nacher vlt 20-30 zutaten die mit zahlen dargestellt werden. und jetzt soll das Array alle Rezepte die ich hinterlegt habe durchsuchen ob es eine 100% übereinstimmung gibt und mir diese auflisten
z.b.Array[100] = {1,3,6,4,8,19,32,5,9,};
Dann verbirgt sich hinter der Kombination
4, 6, 1, 8, 3 vlt ein MaiTai und hinter
32, 3, 9, 1, 19 vlt ein Long Islandbeide sind mit meinen Zutaten möglich und sollen ausgegeben werden.
-
na dann solltest du, wenn du die Eingabe öfters brauchst nur mit anderen Texten diese universell machen in dem du 2 Arrays übergibst. Im ersten lässt du dir die Ergebnisse der Auswahl zurück geben und im 2. übergibst du die Texte die zur auswahl stehen, Wieviel zur auswahl stehen kann die Funktion daran erkennen das zum beispiel das letzte immer leer ist. so kürzt du deinen Quelltext, Wiederverwendung gleicher Sachen die sich nur durch Parameter ändern.
-
Neux schrieb:
danke für die schnelle hilfe
eine elegantere methode gibt es nicht mit der es möglich ist direkt komplette
kobinationen abzufragen
wie 5, 6, 2, 9, 1Array[100] = {1,3,6,4,8,19,32,5,9,};
Dann verbirgt sich hinter der Kombination
4, 6, 1, 8, 3 vlt ein MaiTai und hinter
32, 3, 9, 1, 19 vlt ein Long IslandWenn du dich auf einen Wertebereich für deine Zutaten von 1...255 beschränken würdest, könntest du mit Stringfunktionen arbeiten und das Suchen vereinfachen, z.B.
char Zutatenspeicher[101]={}; ... /* Befüllen */
und dann suchen mit einer Funktion wie
int gefunden(const char *array, char *key, size_t laenge) { while( laenge-- ) if( !strchr(array,key[laenge]) ) return 0; return 1; }
und Aufrufen dann im Programmkontext z.B.
... char maitai[] = {4, 6, 1, 8, 3}; char longisland[] = {32, 3, 9, 1, 19}; ... if( gefunden(Zutatenspeicher, maitai, sizeof maitai) ) puts("vorhanden"); if( !gefunden(Zutatenspeicher, longisland, sizeof longisland) ) puts("nicht vorhanden");
Hat aber alles nichts mit MFC zu tun, ist reines C++ bzw. C.
-
danke ...
sowas hab ich mir vorgestelltsry wenn ich das ins falsche forum gepostet habe
bin noch neu hier