Programmkorrektur



  • Hallo,

    folgendes Programm sollten wir korrigieren:

    #include <iostream.h>
    #include <stdlib>
    void main()
    {
    for( int i=0; i<256; ++I ) cout << hex << i << ' ' << char(i);
    cout << "Wer hat am Ende nicht's zu feiern?\n"
    "\x46\x43 \x42\x61\x79\x65\x72\x6e! \x46\x43 \x42\x61\x79\x65\x72\x6e!";
    system("cls");
    cout << "Ändern Sie den Code so, dass 'Ä', 'ö' und 'ß'"
    " korrekt ausgegeben werden!" << endl
    )
    

    ich habe nun folgenden Code erstellt:

    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    void main()
    {
    	for( int i=0; i<256; ++i ) cout << hex << i << ' ' << char(i);
    	cout << "Wer hat am Ende nicht's zu feiern?\n"
    		 <<  "\x46\x43 \x42\x61\x79\x65\x72\x6e! \x46\x43 \x42\x61\x79\x65\x72\x6e!";
    	system("cls");
    	cout << "Ändern Sie den Code so, dass 'Ä', 'ö' und 'ß'"
    		  << " korrekt ausgegeben werden!" << endl;		
    }
    

    Was genau ist noch falsch? Das Kommandozeilenfenster erscheint jedenfalls ziemlich tot und ohne Ausgabe.



  • Hallo

    Es heißt int statt void main und Systemaufrufe sollte man sich auch überlegen.

    chrische



  • macht den code aber nicht falsch.

    statt #include <cstdlib> würd ich die zeile einfach komplett rausschmeissen. void noch in int geändert und das stückchen code ist syntaktisch wunderbar richtig.

    #include <iostream.h> muss übrigens nicht geändert werden. ist zwar deprecated, aber falsch is es nicht.

    also so:

    #include <iostream.h>
    
    using namespace std;
    
    int main()
    {
    for( int i=0; i<256; ++i ) cout << hex << i << ' ' << char(i);
    cout << "Wer hat am Ende nicht's zu feiern?\n"
    "\x46\x43 \x42\x61\x79\x65\x72\x6e! \x46\x43 \x42\x61\x79\x65\x72\x6e!";
    system("cls");
    cout << "Ändern Sie den Code so, dass 'Ä', 'ö' und 'ß'"
    " korrekt ausgegeben werden!" << endl;
    }
    

    ekliger code, aber korrekt 😉 und wenn man noch esoterisch werden will, könnte man sich vielleicht noch über den inhalt der vorhandenen aussage gedanken machen. wenns denn teil der aufgabe sein soll.



  • Hallo

    Wer weiß, wie sie es korrigieren sollten. Eventuell nach Standardkonformität? 😃

    chrische



  • #include <iostream.h>
    
    using namespace std;
    

    ... die Kombination ist allerdings NICHT korrekt 😃



  • kommt auf den compiler an 😃



  • wenn

    int main();

    dann

    return 0;

    am Ende. Ausserdem erscheint mir der Befehl

    system("cls");

    sinnlos. Dann bekommt man nur noch die letzte Ausgabe zu Gesicht. Falsch ist er jedoch nicht.

    Gruß



  • linu(x)bie schrieb:

    wenn

    int main();

    dann

    return 0;

    am Ende.

    Das ist Quatsch. Wird automatisch zurückgegeben.

    linu(x)bie schrieb:

    Dann bekommt man nur noch die letzte Ausgabe zu Gesicht. Falsch ist er jedoch nicht.

    Er ist nicht standardkonform.
    chrische



  • Hmm ... nach dem ganzen kram hier ...

    da sollte eigentlich der Header #include <iomanip> fehlen ... sonnst geht std::hex nicht.

    #include <iostream>
    #include <iomanip>
    
    int main()
    {
    	for (unsigned short i = 0; i < 256; ++i) 
    		std::cout << std::hex << i << ' ' << static_cast<char>(i) << std::endl;
    	std::cout << "Wer hat am Ende nicht's zu feiern?\n" << "\x46\x43 \x42\x61\x79\x65\x72\x6e! \x46\x43 \x42\x61\x79\x65\x72\x6e!" << std::endl;
    }
    

    zeigt auch, das es problemlos klappt(also die Ausgabe von den Umlauten). Allerdings waren nen par Optimierungen schon angebracht ... und das std::endl in der for-Schleife auch, da man sonnst keine übersichtliche Ausgabe erhält.


Anmelden zum Antworten