C++ devc++



  • programmer21 schrieb:

    Keine Ahnung warum das falsche dargestellt wurde . Jetzt stimmts:

    #include < iostream > 
    #include <string> 
    using namespace std; 
    
    int main() { 
    
    string x = 8000000; // wurde ja schon gesagt
    
    string z = 1000000; 
    
    boole ergebnis x == z ; // müsste es nicht bool sein?
    
    cin>> x >> z; // ist das nicht unnötig?
    
    if( x > z ) { // kann man strings nicht nur so vergleich: if(strcmp(str1, str2) > 0)? also mit > wird das glaube ich nichts.
    cout << " String" << x << " ist groesser als String" << z; 
    
    cout << " Bye " ; // ich wäre hier ja noch für ein: << "\n"
    
    return 0; 
    
    } 
    
    }
    

    Aber was stimmt hier nun genau nicht?



  • boole ergebnis x == z ; // müsste es nicht bool sein?
    

    Doch.

    cin>> x >> z; // ist das nicht unnötig?
    

    Nein, seine Aufgabe ist, zwei Zeichenketten einzulesen. Die obige Initialisierung ist unnötig.

    if( x > z ) { // kann man strings nicht nur so vergleich: if(strcmp(str1, str2) > 0)? also mit > wird das glaube ich nichts.
    

    Doch string s vergleichst du mit == < und >. strcmp vergleicht keine zwei string s, sondern zwei char[] .

    cout << " Bye " ; // ich wäre hier ja noch für ein: << "\n"
    

    Wieso? Danach kommt ein return 0 , was soll die neue Zeile noch bringen?


  • Mod

    out schrieb:

    cout << " Bye " ; // ich wäre hier ja noch für ein: << "\n"
    

    Wieso? Danach kommt ein return 0 , was soll die neue Zeile noch bringen?

    Sei "$>" das Kommandoprompt

    [b]$>[/b] ./programm
    Bye [b]$>[/b]
    

    vs.

    [b]$>[/b] ./programm
    Bye 
    [b]$>[/b]
    

    Sehr wichtiger Unterschied für die Benutzerfreundlichkeit.



  • out schrieb:

    if( x > z ) { // kann man strings nicht nur so vergleich: if(strcmp(str1, str2) > 0)? also mit > wird das glaube ich nichts.
    

    Doch string s vergleichst du mit == < und >. strcmp vergleicht keine zwei string s, sondern zwei char[] .

    Oh. Ach so. 😃

    out schrieb:

    cout << " Bye " ; // ich wäre hier ja noch für ein: << "\n"
    

    Wieso? Danach kommt ein return 0 , was soll die neue Zeile noch bringen?

    Hm... ja wollte er das nicht länger da stehen haben?



  • Enno schrieb:

    out schrieb:

    if( x > z ) { // kann man strings nicht nur so vergleich: if(strcmp(str1, str2) > 0)? also mit > wird das glaube ich nichts.
    

    Doch string s vergleichst du mit == < und >. strcmp vergleicht keine zwei string s, sondern zwei char[] .

    Ne, da wird nur überprüft, ob das erste Zeichen im string gößer ist als das erste Zeichen des anderen strings. Wenn du die Gesamtgröße vergleichen willst, benutzt du

    if(x.size() > z.size())



  • Incocnito schrieb:

    Ne, da wird nur überprüft, ob das erste Zeichen im string gößer ist als das erste Zeichen des anderen strings. Wenn du die Gesamtgröße vergleichen willst, benutzt du if(x.size() > z.size())

    Von Größe hat keiner was geschrieben, und dass nur die ersten Zeichen verglichen werden ist Quark, es werden alle Zeichen verglichen - soweit nötig. Wenn das erste Zeichen schon unterschiedlich ist, ist das Ergebnis ja schon klar und der Vergleich kann abgebrochen werden.

    Hat aber mit der gnazen Problemstellung nichts zu tun, der OP will ja Zahlen vergleichen, da sind strings für den Vergleich völlig fehl am platz, egal ob per op<, strcmp, string::compare oder per Vergleich von size().



  • #include < iostream >
    #include <string>
    using namespace std;
    
    int main() {
    
        string x = Kekse;
    
        string z = Brot;
    
        boole ergebnis  x == z ;
    
        cin>> x >> z;
    
        if( x > z ) {
        cout << " String" << x << " ist groesser als String" << z;
    
        return 0;
    
        }
    
    }
    

    Kann ich den string so vergleichen?



  • Beratungsresitent 😕

    oder zu viel

    boole ergebnis  x == z ; // muss da nicht bowle hin?
    

    Nicht ganz ernst - aber da du schon drauf hingewiesen ...



  • Ich habs jetzt versucht nach euren tipps bisschen zu verbessern , aber es gibt immer noch error raus:

    #include < iostream >
    #include <string>
    using namespace std;
    
    int main() {
    
        string x = Kekse;
    
        string z = Brot;
    
        bool ergebnis  x == z ;
    
        cin>> x >> z;
    
        if( x.size() > z.size() ) {
        cout << " String" << x << " ist groesser als String" << z;
    
        return 0;
    
        }
    
    }
    

    Was mache ich falsch?



  • Die geschweiften Klammern bitte nicht nach dem Zufallsprinzip verteilen, sondern mit System und Überlegung.



  • Warum schreibst du nicht die kompletten Fehlermeldung mit Zeilennummer 😕

    #include < iostream >
    
    #include <iostream> // erkennst du den Unterschied?
    


  • programmer21 schrieb:

    Was mache ich falsch?

    Dein Programm ist einfach nur Müll. Merkwürdige Formatierung, syntaktisch total falsche Initialisierung (Z. 11)(und dazu wahrscheinlich noch anders gemeint), Kekse und Brot sind doch nicht in den Standard-Headern definiert (bzw. hast du vergessen daraus ein String-Literal zu machen? Soll das eigentlich "Kekse" heißen?), falsche Einbindung von <iostream>.



  • #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
       {
    
        string x = Kekse;
    
        string z = Brot;
    
        bool ergebnis  x == z ;
    
        cin>> x >> z;
    
        if( x.size() > z.size() )
    
        {
        cout << " String" << x << " ist groesser als String" << z;
    
        return 0;
    
        }
    
    }
    

    Es scheint aber immer noch nicht zu funktionieren.

    error Kekse and Brot were not declared in scope

    Was mache ich falsch .



  • Jetzt bitte mal, lieber Mensch, der hinter dem Pseudonym programmer21 steht, in voller Aufrichtigkeit : Ist das Ihr Ernst?



  • Ich bin leider programieranfänger und daher frage ich ja auch.



  • Was ist den nun an meinem Programm falsch?



  • Ausschlaggebend ist hier für dein Versagen definitiv nicht die Tatsache, dass du Programmieranfänger bist, sondern zu 100% ignorant und unfähig die unzähligen Ratschläge, die dir in dem Verlauf des Threads bereits gegeben wurde, umzusetzen und damit auf ein vollständiges und funktionierendes Programm zu kommen.

    Lass das Programmieren lieber sein. Bezahl jemanden dafür, dass er dir dir Hausaufgaben von deinem Informatik-Unterricht macht. Oder frag ein guten Freund.



  • Sone schrieb:

    Dein Programm ist einfach nur Müll. Merkwürdige Formatierung, syntaktisch total falsche Initialisierung (Z. 11)(und dazu wahrscheinlich noch anders gemeint), Kekse und Brot sind doch nicht in den Standard-Headern definiert (bzw. hast du vergessen daraus ein String-Literal zu machen? Soll das eigentlich "Kekse" heißen?), falsche Einbindung von <iostream>.

    Das solltest du wohl noch einmal lesen!



  • Weißt du wir froh ich über C++-Programmierung in der Schule gewesen wäre? Eigentlich haste ganz schönes Schwein, wir haben nur Delphi gemacht.

    Hier, gibs ab, sollte stimmen, aber lass dich bloß nichts dazu fragen, da du es wohl eh nicht verstehst.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
        int a(0), b(0);
        cout << "Geben sie eine ganzzahlige Variable ein:\n";
        cin >> a;
        cout << "Geben sie noch eine ganzzahlige Variable ein:\n";
        cin >> b;
        int c(a+b);
        cout << a << "+" << b << "=" << c << "\n\n";
    
        float fa(0), fb(0);
        cout << "Geben sie eine Gleitpunktzahl ein:\n";
        cin >> fa;
        cout << "Geben sie nocheine Gleitpunktzahl ein:\n";
        cin >> fb;
        float fc(fa-fb);
        cout << fa << "-" << fb << "=" << fc << "\n\n";
    
        bool ba(0), bb(0);
        cout << "Geben sie true oder false ein:\n";
        string dummy;
        cin >> dummy;
        if (dummy == "false")
            ba = false;
        if (dummy == "true")
            ba = true;
    
        cout << "Geben sie true oder false ein:\n";
        cin >> dummy;
        if (dummy == "false")
            bb = false;
        if (dummy == "true")
            bb = true;
        bool bc(ba||bb);
        cout << ba << "||" << bb << "=" << bc << "\n\n";
    
        char ca(0), cb(0);
        cout << "Geben sie ein Zeichen ein:\n";
        cin >> ca;
        cout << "Geben sie noch ein Zeichen ein:\n";
        cin >> cb;
        bool cc(ca!=cb);
        cout << ca << "!=" << cb << "=" << cc << "\n\n";
    
        string sa, sb;
        cout << "Geben sie eine Zeichenkette ohne whitespaces ein:\n";
        cin >> sa;
        cout << "Geben sie noch eine Zeichenkette ohne whitespaces ein:\n";
        cin >> sb;
        bool sc(ca<cb);
        cout << sa << "<" << sb << "=" << sc << "\n\n";
    }
    


  • Enno schrieb:

    Sone schrieb:

    Dein Programm ist einfach nur Müll. Merkwürdige Formatierung, syntaktisch total falsche Initialisierung (Z. 11)(und dazu wahrscheinlich noch anders gemeint), Kekse und Brot sind doch nicht in den Standard-Headern definiert (bzw. hast du vergessen daraus ein String-Literal zu machen? Soll das eigentlich "Kekse" heißen?), falsche Einbindung von <iostream>.

    Das solltest du wohl noch einmal lesen!

    Hab' ich, bin zufrieden. Oder findest du ich war zu fies? Ich nicht.


Anmelden zum Antworten