Problemchen mit string array



  • Ja schönen guten Abend, ich bräuchte mal bitte eine kleine Hilfe von euch Profis. Ich hänge schon seit längerer Zeit an einem Problem. Ich möchte folgendes machen.

    #include <iostream>
    #include <string>
    int main()
    {
    string wochenTage[7] = {"Montag", "Dienstag", "Mittwoch", "Donnertag", "Freitag", "Samstag", "Sonntag"};
    
    	cout << "Gib den Wochentag ein: "; cin >> eingabe;
    
    	if (eingabe == wochenTage[eingabe])
    	{
    		cout << "richtig" << endl;
    	}
    	else
    		cout << "falsch" << endl;
    }
    

    wochenTage[eingabe] ist leider falsch, daher die Compilerfehlermeldung das dieser Array nicht akzeptiert wird.

    Richtig sollte es sein wie if (eingabe == wochenTage[0])

    Was ich erreichen will ist, dass der Computer automatisch den Wochentag aus der string initialisierung abruft. Das bekomme ich einfach nicht hin. Ich habe schon in milliarden von Büchern und Webseiten durschforschtet aber nichts gebracht.

    klar kann ich schreiben:

    if (eingabe == wochenTage[0] || eingabe == wochenTage[1]) usw.

    aber so voll umständlich. Kennt ihr Profitipps?

    lg
    Sandor++



  • Wenn ich dich richtig verstehe, willst du überprüfen ob der string eingabe einen der Werte aus dem Array enthält, ja?

    if (std::find(std::begin(wochenTage), std::end(wochenTage), eingabe) != std::end(wochenTage))
    ...
    

    Benötigt <algorithm>.



  • Sandor++ schrieb:

    klar kann ich schreiben:

    if (eingabe == wochenTage[0] || eingabe == wochenTage[1]) usw.

    aber so voll umständlich.

    int i;
    for(i = 0; i < 7; ++i)
       if(eingabe == wochenTage[i])
       {
          cout << "richtig\n";
          break;
       }
    if(i > 7)
       cout << "falsch\n";
    


  • @Nathan, genau.
    @Belli, danke genau das habe ich gesucht du bist ein Gott!

    Und in dieser richtung habe ich auch schon ausprobiert und leider immer daneben!

    Mann danke! Ich frag mich liegt das an meiner doofheit oder mangel an erfahrung?? 😕 😞

    edit:

    wobei if (i > 7) eigentlich falsch wäre. da sollte es schon heissen
    if (if eingabe != wochentage[i])

    Und nochmals danke, genau das habe ich gesucht. Auf die dimpelsten Sachen kommt man nicht drauf. Oh mannn!!



  • [quote="Sandor++"]@Nathan, genau.
    @Belli, danke genau das habe ich gesucht du bist ein Gott!/quote]
    Ich möchte übrigens zur Erklärung anmerken, dass meine Lösung dasselbe macht, sie ist nur kompakter, indem sie die Suche auslagert. Dadurch ist sie aber auch ein wenig schwerer zu verstehen.



  • @Nathan, achso danke Nathan, danke danke danke!
    wobei mit algoritm bin ich noch nicht so weit ich wollte das janze mit der Schleife lösen und arrays.

    Liegt das an meine doofheit?

    Jetzt bin ich nach 10 Jahren Forschungsarbeit, einen Pups weiter!



  • Wobei ich die Idee von Nathan besser finde, da "falsch" auch angezeigt wird und bei Belli klappt das nicht: Nur "richtig" wird angezeigt und nicht "falsch".



  • Ja, das if (i > 7) müsste if (i == 7) sein.



  • Ja, mein Fehler! Ich würde es auf

    if(i > 6)
    

    berichtigen, aber Nathans Vorschlag funktioniert natürlich auch!

    Edit: Das hätte man aber schnell merken können ...



  • Wo lernt ihr den Programmieren in der Universität oder nur privat mit Büchern so wie ich?



  • Ich würde mal behaupten, die meisten hier haben sich ihr Wissen selbst angeeignet mit Büchern, Tutorials und so weiter. Ein nicht geringer Anteil wird auch sicherlich ein Informatikstudium (oder vergleichbares) absolviert haben und konnten ihr Wissen im Studium anwenden und auch erweitern.
    Ein paar dürften sicherlich auch Quereinsteiger sein, die programmieren gelernt haben und dies nun beruflich machen ohne Studium oder Ausbildung.

    Fakt ist nur, Programmieren lernt man durch machen und nicht durch mal hören oder mal eben lesen. Und das ist auch im Studium so: es gibt einige Leute, die können und wollen nix mit Programmieren machen und zu tun haben, aber sie haben die Klausur trotzdem geschafft.


Anmelden zum Antworten