Arrays als Speicher für Wörter?



  • Liebe Forengemeinschaft!

    Seit einiger Zeit schon schlage ich mich mit einem Problem bei C++ herum:
    Es sollen der Reihe nach einige "int"-Werte von Benutzer eingegeben werden.
    Die Frage ist immer fast dieselbe, es ändert sich nur ein Wort.
    Nun wäre es überaus praktisch, diese Eingabe über eine for-Schleife zu regeln und per Index auf das Wort (vielleicht in einem Array?)welches vorprogrammiert ist, zugreifen zu können.
    Bisher hat allerdings mein Compiler immer etwas gegen meine Versuche gehabt...

    bisher sieht die entsprechende Codestelle so aus:

    for (i=0; i<MAX; i++)
    {
    cout << "Wie viele " << Name[i] << " wollen Sie bauen?";
    Wert = EingabeNormal(0,10000);
    cout << endl;
    Einheiten[i]=Wert;
    }

    Einheiten = int-Array zu Speicherung der Eingaben
    EingabeNormal(0,10000) = Funktion zur Eingabe mit Überprüfung
    Name[] = fragliches Element
    Wert = gewöhnliche "int"-Variable

    Ich hoffe sehr, dass ihr mir helfen könnt und in dankbar für jeden Hinweis 😕
    Vielen Dank im Voraus
    MichaelP


  • Mod

    Da kann man dir sicherlich helfen. Die Idee an sich ist auch nicht verkehrt. Verkehrt ist jedoch, dass du von uns Wahrsagefähigkeiten erwartest. Wir wissen weder was dein Problem mit dem Code ist, noch wie dein Code genau aussieht, der das Problem hat. Siehe dazu auch ersten und dritten Link in meiner Signatur.

    Das C++-Forum wäre vermutlich auch ein besserer Ort für technische Fragen zur C++-Programmierung.



  • Danke für deine freundliche Aufnahme im Forum und den motivierenden Umgang mit Neulingen. Scheinbar habe ich mich nicht allzu klar ausgedrückt. Dies kann man allerdings auch auf andere Art und Weise sagen.
    Im Übrigen geht es mir nur darum, eine Möglichkeit zu finden, um Wörter in einer Variablen zusammenzufassen, um sie dann einzeln aufrufen zu können.

    Das war mein erster Versuch dazu als Array:

    char NamenSee[11]={'Feuerschiffe','Dampframmen','Rammschiffe','Ballistaschiffe','Katapultschiffe','Mörserschiffe','Tauchboote','Raketenschiffe','Ballonträger','Schnellboote','Tender'};

    Soweit ich jetzt in meinem Lehrbuch nachgelesen habe, ist das natürlich völliger Quatsch, da ja der Datentyp char nur für einen Buchstaben steht. Allerdings konnte ich nichts wirklich Passendes finden, um ganze Wörter in einem oder einer Art Array zu speichern.

    Ich würde mich wirklich sehr freuen und wäre überaus dankbar, wenn ihr mir einen Tipp gegen könntet, wie das ungefähr geht oder mich (auf freundliche Weise!) auf meine Unfähigkeit hinweisen würdet.

    Freundliche Grüße
    MichaelP



  • Das Verhalten von Variablen hängt nicht von ihrem NAmen ab, sondern von ihrem Typ. Wie sie Definiert sind.
    Das hast du aber in dein ersten Post unterschlagen.

    Wenn du aus deinem char-Array ein Array auf Zeiger auf char machst und dann deine Wörter als String in " angibst, passt das schon.

    char *NamenSee[]={"Feuerschiffe","Dampframmen",... der Rest deiner Flotte, NULL};
    

    Du hast jetzt ein Array. In diesem Array stehen die Zeiger auf die Texte.
    Zuletzt hast du noch einen Zeiger auf NULL. Da weisst du dann, das die Liste vorbei ist.
    Un so kommst du dran:

    for(int i=0;NamenSee[i] != NULL;i++)
      cout << NamenSee[i] << ", ";
    


  • Ich danke dir sehr für diese Lösung. Ich habe es bereits "eingecodet" und es funktioniert bestens. 👍

    Vielen herzlichen Dank
    MichaelP



  • C++ wäre ja eher so was:

    #include<iostream>
    #include<map>
    
    using namespace std;
    
    main(){
      map<string, int> schiffe;
      schiffe["Feuerschiffe"] = 0; schiffe["Dampframmen"] = 0; schiffe["Nussschalen"] = 0;
      map<string, int>::iterator i;
      int n;
      for(i = schiffe.begin(); i != schiffe.end(); i++){
        cout << "Anzahl " << i->first << " ? ";
        cin >> n;
        i->second = n;
      } 
      for(i = schiffe.begin(); i != schiffe.end(); i++){
        cout << i->first << " " << i->second << endl;
      } 
    }
    

Anmelden zum Antworten