C++ devc++



  • programmer21 schrieb:

    Was muss man eigentlich jetzt beachten wenn ich strings vergleichen will leute?

    Kommt darauf an was für Strings.



  • Das muss ich ja machen:

    - 2 Strings und das Ergebnis des „>Vergleichs“
    Achten Sie auf eine gefällige Ausgabe am Bildschirm und erstellen Sie wieder zusätzlich einen
    Testplan.

    Hast du paar tips für mich?



  • Wenn die Strings vom Typ std::string sind, einfach mit == Vergleichen.



  • Hallo leute mein programmcode sieht so aus :

    [cpp ] code [/cpp ]#include < iostream >
    #include <string>
    using namespace std;

    int main() {

    string x = 8000000;

    string z = 1000000;

    boole ergebnis x == z ;

    cin>> x >> z;

    if( x > z ) {
    cout << " String" << x << " ist groesser als String" << z;

    cout << " Bye " ;

    return 0;

    }

    }

    Aber es wird gar nicht ausgeführt . Vergleiche ich die strings falsch oder was ist los?



  • Ich versuchs mal richtig darzustellen:

    Hallo leute mein programmcode sieht so aus :

    [cpp ] #include < iostream > [/cpp ]).
    #include <string>
    using namespace std;

    int main() {

    string x = 8000000;

    string z = 1000000;

    boole ergebnis x == z ;

    cin>> x >> z;

    if( x > z ) {
    cout << " String" << x << " ist groesser als String" << z;

    cout << " Bye " ;

    return 0;

    }

    }

    Aber es wird gar nicht ausgeführt . Vergleiche ich die strings falsch oder was ist los?



  • Bedienungsanleitung für C++-Tags:
    1. Text markieren
    2. auf [C/C++]-Button klicken

    Wenn du das jetzt immer noch nicht hinkriegst, dann gibt's ein Facepalm von mir.



  • #include <cstdlib> 
    #include <iostream> 
    
    using namespace std; 
    
    int main() 
    { 
    
    int a = 5; 
    int z = 100; 
    bool ergebnis; 
    cin >> a >> z; 
    ergebnis = a != z; 
    
    char dummy; 
    cin>> dummy; 
    
    cout << " a nicht gleich z " ; 
    
    getchar(); 
    
    return 0; 
    
    }
    

    Kann mir jemand erklären was mit meinem code nicht stimmt?



  • Keine Ahnung warum das falsche dargestellt wurde . Jetzt stimmts:

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

    Aber was stimmt hier nun genau nicht?



  • Schaut dir mal das Example an, wie man eine Zeichenkette erstellt: http://www.cplusplus.com/reference/string/string/append/



  • Ich hab das leider nicht so ganz verstanden. Kannst du mir nicht ein wenig genauer erklären was in meinem Code fehlt?



  • string x = 8000000;   // Deins falsch
    string x = "Writing"; // Korrektes Beispiel
    

    Come on, you can do it 👍



  • Wieso nimmst du statt einen Zahlenwert ein Wort?



  • Weil string nur für Zeichenketten gedacht ist, da kann keine Zahl rein, außer du konvertierst die halt entsprechend.



  • Weil dein Datentyp ein String, also eine Zeichenkette ist. C++ erkennt sie als solche nur mittels "". Was du geschrieben hast, ist kein String, sondern int. Dass man dir den Unterschied zwischen elementaren Datentypen erklären muss, legt die Vermutung nahe, dass du in der Vorlesung nichts gelernt hast und jetzt die Aufgabe aufn letzten Drücker machst bzw. schon fast machen lässt. Mensch, du musst doch irgendwas von deinem Dozenten haben (Skript, Folien, Bücher, ......), wo solche grundlegende Sachen drin stehen - ich verstehe das Ganze nicht.



  • programmer21 schrieb:

    Wieso nimmst du statt einen Zahlenwert ein Wort?

    Wikipedia schrieb:

    Eine Zeichenkette oder (aus dem Englischen) ein String ist in der Informatik eine Folge von Zeichen (z. B. Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen) aus einem definierten Zeichensatz.
    Zeichen können sich in einer Zeichenkette wiederholen, die Reihenfolge der Zeichen ist definiert. Zeichenketten sind somit Sequenzen aus Symbolen mit endlicher Länge.
    In der Programmierung ist eine Zeichenkette ein Datentyp, der eine Kette von Zeichen mit fester oder variabler Länge enthält. Damit werden hauptsächlich Wörter, Sätze und ganze Texte gespeichert.



  • 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())


Anmelden zum Antworten