Fehler



  • Hallo zusammen
    Ich hab ein Problem beim Kompilieren des folgenden Textes:

    #include <iosteam.h>
    int main()
    { 
        int i;
        cout << "Hallo dort \n";
        cout << "Hier ist 5: " << 5 << "\n";
        cout << "Der Manipulator endl beginnt eine neue Zeile.";
        cout <<
               endl;
        cout << "Hier ist eine grosse Zahl:\t" << 70000 << endl;
        cout << "Hier ist die Summe von 8 und 5:\t" << 8+5 << endl
        cout << "Und hier ist ein Bruch:\t\t" << (float) 5/8 << endl;
        cout << "Und eine riesengrosse Zahl:\t";
        cout << (double) 7000 * 7000 <<
               endl;
        cout << "vergessen sie nicht, Jesse Liberty durch Ihren Namen"
                " zu ersetzen...\n";
        cout << "Michi 13 ist ein C++-Programmierer!\n";
        cin >> i;
        return 0;
    }
    

    Der Fehler ist angeblich in Zeile 5. ( cout << "Hallo dort \n"; )
    Ich hab den Text aus einem online Tutorial und leicht abgeändert
    ( int i; und cin >> i; )
    Ich versteh den Fehler nicht, da ich ein anfänger bin...
    Kann mir evtl jemand helfen?

    freundliche grüsse Michi 13



  • Hallo Michi,

    da Du Anfänger bist, mag man es Dir verzeihen. Bitte beim nächsten Mal eine aussagekräftigere Überschrift und auch eine bessere Beschreibung des genauen Fehlers.

    Ich habe den Code von Borland BC++5.5 compilieren lassen

    Zeile 1: #include <iost r eam.h>
    Zeile 11: (5+8) und am Ende ";" fehlt
    Zeile 12: (5/8)
    


  • Es heiszt iostream ohne .h. .h ist veraltet.

    cout liegt im namespace std; Setz mal ein
    using namespace std;
    nach dem include (also vor int main())

    EDIT: Falls das nicht hilft ist die Chance grosz dass sowohl dein Compiler als auch dein Tutorial veraltet sind.



  • Das beantworte ich erstmal im Source

    /*  
     * #include <iosteam.h>
     * Also ween schon, dann
     * #include <iostream.h> 
     * - das "r" fehlte
     * Aber auch das ist dubios;
     * besser :
     */
    #include <iostream>
    
    /*
     * Wenn man
     */
    // using namespace std;
    /*
     * verwendet kann man sich das 
     * std::
     * jeweils sparen
     *
     * Das ist zwar praktisch aber nicht allgemein zu empfehlen.
     */
    
    int main()
    { 
        int i; // Initialisierer ? ( = 0 )
        /* 
         * Es  ist inkonsitent einmal "\n" und einmal std::endl zu benutzen,
         * aber sei's drum
         */  
        std::cout << "Hallo dort \n";
        std::cout << "Hier ist 5: " << 5 << "\n";
        std::cout << "Der Manipulator std::endl beginnt eine neue Zeile.";
        // Ja, aber den kannst Du trotzdem mit << einfach dahinterhängen
        std::cout <<  
                  std::endl; // Was soll das auf einer eigenen Zeile ?
    
        std::cout << "Hier ist eine grosse Zahl:\t" << 70000 << std::endl;
        std::cout << "Hier ist die Summe von 8 und 5:\t" << 8+5 << std::endl
        std::cout << "Und hier ist ein Bruch:\t\t" << (float) 5/8 << std::endl;
        /*
         * Es ist good practice eine neue Anweisung mit << auch nur für eine neue
         * Ausgabezeile anzufangen 
         */ 
        std::cout << "Und eine riesengrosse Zahl:\t";
        /*
         * Und wenn's mal zu lang wird das ';' weglassen eine neue Zeile mit
         * << auf einer Tabulatorposition beginnen und erst nach dem endl ein
         * ';' setzen  
         */
        std::cout << (double) 7000 * 7000 << std::endl;
        std::cout << "vergessen sie nicht, Jesse Liberty durch Ihren Namen"
                " zu ersetzen...\n";
        std::cout << "Michi 13 ist ein C++-Programmierer!\n";
    
        std::cin >> i; // Und warum in ein int un dnicht in einen std::string?
    
        return 0;
    }
    

    Dann könntest/solltest Du Dich nochmal mit std::wstring un den _T(const char*) resp _TEXT(const char*) Makros auseinandersetzen; es kann sein dass Dein Compiler mal sowas wie UNICODE oder _UNICODE definiert und dann solltest Du nicht mit einfachen, zudem impliziten

    (const char *) /* wie z.B. */ "Hello World"
    

    arbeiten.

    Gewöhn Dir am besten gleich ein wenig "UNICODE-Stil" an.

    Grüsse

    Gast++



  • #include <iostream> 
    int main()
    { 
        int i = 0;
        std::cout << "Hallo dort" << std::endl;
        std::cout << "Hier ist 5: " << 5 << std::endl;
        std::cout << "Der Manipulator endl beginnt eine neue Zeile." << std::endl;
        std::cout << "Hier ist eine grosse Zahl:\t" << 70000 << std::endl;
        std::cout << "Hier ist die Summe von 8 und 5:\t" << 8+5 << std::endl;
        std::cout << "Und hier ist ein Bruch:\t\t" << 5.0/8.0 << std::endl;
        std::cout << "Und eine riesengrosse Zahl:\t" << 7000.0 * 7000.0 << std::endl;
        std::cout << "vergessen sie nicht, Jesse Liberty durch Ihren Namen zu ersetzen..." << std::endl;
        std::cout << "Michi 13 ist ein C++-Programmierer!" << std::endl;
        std::cin >> i;
        return 0;
    }
    


  • Vielen Dank
    jetzt funktioniert es 🙂 👍
    Ich hab wohl einige Fehler gemacht (nicht nur einen) 🙄

    freundliche grüsse Michi 13



  • Und und endl beendet nicht nur die Zeile ...



  • ...sondern leert auch den Eingabepuffer.


Anmelden zum Antworten