[OT] Spielwiese für Hacker und PI (was: was mache ich falsch)



  • otze schrieb:

    Nix da. Das ist gut und richtig so. Nur weil es nicht DEIN Stil ist, heisst es nicht, dass es schlecht oder falsch ist. Hier siehst du sogar ein Paradebeispiel für richtige Benutzung.

    Natürlich ist das schlecht. using namespace XY ist immer schlecht. Alleine aus Konsistenzgründen. Und brauchst du alles aus dem std-namespace? (Ich tippe jetzt einfach mal auf nein.) Und wenn du zu faul bist, std:: dranzuschreiben, dann nimm using std::XY;.

    otze schrieb:

    Auch das ist völlig in Ordnung so. Man könnte sogar behaupten, dass dies pre C++0x eine der besten Generalisierungen zur Erzeugung von einzelnen Variablen ist (du würdest auch immer T a(0) schreiben, wenn T ein beliebiges Template ist und nicht T a = 0)

    Nein, das ist nicht in Ordnung. Der Anfänger wird sich fragen, wieso da kein = ist. Aber wenn du so auf "Generalisierung" bist, wieso nimmst du dann nicht immer {}? Geht doch nun bei allem. Die Initialisierung ist übrigens sowieso unnötig.

    otze schrieb:

    Und hässlich ist der Code auch nicht. Nur ein wenig zu viele Leerzeilen, aber das wird sich schon geben.

    Die Leerzeilen sind gar nicht mal der Kritikpunkt. Seine Leertaste ist wohl kaputt oder so.

    otze schrieb:

    Dein Templateschwachsinn ist auch nicht besser.

    Welcher Templateschwachsinn?

    Edit: Sorry, ganz vergessen. endl ist natürlich auch Mist.

    Hier mal ne verbesserte Version...

    #include <iostream>
    
    int main()
    {
        // So lokal wie möglich halten.
        using std::cin;
        using std::cout;
    
        // Konstanten sind sexy. Ob die Nummern stimmen, weiß ich gerade nicht. Das zweite erzeugt vermutlich einen Überlauf.
        char const ue = '\201';
        char const sz = '\341';
    
        // Leerzeichen sind nicht böse, Zeilenumbrüche bei Ausgaben könnte man auch in mehrere Codezeilen schreiben.
        cout << "Wollen Sie Die Adresse des Computernutzers wissen?\n"
             << "Falls Ja dr" << ue << "cken Sie 1\n"
             << "Falls Nein eine andere Zahl\n";
    
        // Initialisierung unnötig.
        int entered;
        cin >> entered;
    
        if(entered == 1)
        { // Blöcke kann man auch hinzufügen.
            cout << "Max Musterman\n"
                 << "Schillerstra" << sz << "e 9\n"
                 << "999999 alaska\n";
        }
    
        cout << "Vielen Dank!\n";
        cin.get(); // Wie auch immer. Alles ist besser als system(). Sogar getch oder kbhit.
    }
    


  • 314159265358979 schrieb:

    otze schrieb:

    Auch das ist völlig in Ordnung so. Man könnte sogar behaupten, dass dies pre C++0x eine der besten Generalisierungen zur Erzeugung von einzelnen Variablen ist (du würdest auch immer T a(0) schreiben, wenn T ein beliebiges Template ist und nicht T a = 0)

    Nein, das ist nicht in Ordnung. Der Anfänger wird sich fragen, wieso da kein = ist.

    [...]

    Hier mal ne verbesserte Version...

    #include <iostream>
    
    int main()
    {
        // So lokal wie möglich halten.
        using std::cin;
        using std::cout;
    
        // Konstanten sind sexy.
        wchar_t const ue = '\201';
        wchar_t const sz = '\341';
    
        // Leerzeichen sind nicht böse, Zeilenumbrüche bei Ausgaben könnte man auch in mehrere Codezeilen schreiben.
        cout << "Wollen Sie Die Adresse des Computernutzers wissen?\n"
             << "Falls Ja dr" << ue << "cken Sie 1\n"
             << "Falls Nein eine andere Zahl\n";
    
        // Initialisierung unnötig.
        int entered;
        cin >> entered;
    
        if(entered == 1)
        { // Blöcke kann man auch hinzufügen.
            cout << "Max Musterman\n"
                 << "Schillerstra" << sz << "e 9\n"
                 << "999999 alaska\n";
        }
    
        cout << "Vielen Dank!\n";
        cin.get(); // Wie auch immer. Alles ist besser als system(). Sogar getch oder kbhit.
    }
    

    Was ist das für eine Logik ? Kein Anfänger wird diesen Code ohne weiteres verstehen.

    Leerzeilen ? Wo zum teufel willst du in dem Code Leerzeichen ?
    Völlig unnötige Konstanten, lateinische Umlaute brauchst du nur jeweils ein mal (!).
    Endl hab ich nicht benutzt.

    Und auf using wären hier mindestens auch die hälfte (inklusive mir) gekommen, aber wenn du einfach zu faul bist meine verdammten Posts zu lesen, wird dir kein Mensch mehr helfen können.



  • Naja,

    std::cout << a << b << c << d << e;
    

    sieht schon besser aus als

    std::cout<<a<<b<<c<<d<<e;
    

    Aber im Endeffekt ziemlich wayne und sieht am Ende iwie doch nur nach ner Rumpickerei auf einem poster auf. Wieso er den gesamten namespace per using-deklaration einbindet wurde nun schon oft genug gesagt.

    Hat denn der Threadersteller noch fragen ?



  • Hacker schrieb:

    Was ist das für eine hirngestörte Logik ? Kaum ein Anfänger wird diesen Code verstehen.

    Natürlich wird er ihn verstehen. Du musst ihm nur erklären, was using tut und was der std-namespace ist.

    Hacker schrieb:

    Leerzeilen ? Wo zum teufel willst du in dem Code Leerzeichen ?

    Verwechsle nicht Leerzeilen mit Leerzeichen. Leerzeichen gehören bei cout << XY hin. Leerzeilen sind ganz okay.

    Hacker schrieb:

    Völlig unnötige Konstanten, lateinische Umlaute brauchst du nur jeweils ein mal (!).

    Und woher soll der Anfänger wissen, was dieses komische \xyz in deinem Code ist? Die Konstanten geben dem Ding einen Namen, da ist völlig egal, wie oft die verwendet werden.

    Hacker schrieb:

    Endl hab ich nicht benutzt.

    Hast du. Bei deiner letzten Ausgabe.

    Hacker schrieb:

    Und auf using wären hier mindestens auch die hälfte (inklusive mir) gekommen

    Und warum hast du es dann nicht gleich richtig gemacht?

    Hacker schrieb:

    aber wenn du einfach zu faul bist meine verdammten Posts zu lesen, wird dir kein Mensch mehr helfen können.

    Ich habe deine Posts gelesen, sonst würde ich nicht auf ihnen herumreiten.



  • 314159265358979 schrieb:

    Hacker schrieb:

    Was ist das für eine hirngestörte Logik ? Kaum ein Anfänger wird diesen Code verstehen.

    Natürlich wird er ihn verstehen. Du musst ihm nur erklären, was using tut und was der std-namespace ist.

    Und warum tust du es dann nicht ?

    314159265358979 schrieb:

    Hacker schrieb:

    Leerzeilen ? Wo zum teufel willst du in dem Code Leerzeichen ?

    Verwechsle nicht Leerzeilen mit Leerzeichen. Leerzeichen gehören bei cout << XY hin. Leerzeilen sind ganz okay.

    Ja, das war ein Schreibfehler. Nein, bei cout hät ich es nicht bemerkt.

    314159265358979 schrieb:

    Hacker schrieb:

    Völlig unnötige Konstanten, lateinische Umlaute brauchst du nur jeweils ein mal (!).

    Und woher soll der Anfänger wissen, was dieses komische \xyz in deinem Code ist? Die Konstanten geben dem Ding einen Namen, da ist völlig egal, wie oft die verwendet werden.

    Ja, aber welche Werte wieso eingesetzt ist trotzem nicht erklärt. (komische Logik)

    314159265358979 schrieb:

    Hacker schrieb:

    Endl hab ich nicht benutzt.

    Hast du. Bei deiner letzten Ausgabe.

    Übersehen.

    314159265358979 schrieb:

    Hacker schrieb:

    Und auf using wären hier mindestens auch die hälfte (inklusive mir) gekommen

    Und warum hast du es dann nicht gleich richtig gemacht?

    Weil floori es verdammt nochmal nicht versteht !? (-> siehe erstes Kommentar)

    314159265358979 schrieb:

    Hacker schrieb:

    aber wenn du einfach zu faul bist meine verdammten Posts zu lesen, wird dir kein Mensch mehr helfen können.

    Ich habe deine Posts gelesen, sonst würde ich nicht auf ihnen herumreiten.

    Wahrscheinlich. Mindestens ein/zweimal hab ich darauf hingewiesen, dass es verständlich und nicht effizient oder gar sauber sein muss, trotzdem ist ersichtlich dass du es ignorierst.



  • Hacker schrieb:

    Und warum tust du es dann nicht ?

    Keine Lust.

    Hacker schrieb:

    Ja, aber welche Werte wieso eingesetzt ist trotzem nicht erklärt.

    Für sowas gibts dann Kommentare. Ich habe mir diese mal erspart, da die Werte sowieso falsch sind. Kannst sie ja mal korrigieren.

    Hacker schrieb:

    Weil floori es verdammt nochmal nicht versteht !?

    Du verwechselst Fahigkeiten mit Wissen mein lieber Padawan. Er versteht es nicht, weil es ihm niemand erklärt hat. Täte das jemand, verstünde er es auch. (Konjunktiv ohne 'würde' ist übrigens viel toller.)

    Hacker schrieb:

    Wahrscheinlich. Mindestens ein/zweimal hab ich darauf hingewiesen, dass es verständlich und nicht effizient oder gar sauber sein muss, trotzdem ist ersichtlich dass du es ignorierst.

    Siehe oben. Wenn er was nicht kennt, erklärs ihm. Deshalb fragt er im Forum, um Hilfe zu bekommen. Dass du dann deinen Code mit Absicht scheiße schreibst, geht gar nicht.



  • Nein, die Werte sind richtig. Du hast höchstwahrscheinlich einfach keine Lust gehabt nachzusehen, ob Sie korrekt waren oder nicht.

    Und wenn du sogar offen zugibst keine Lust zu haben, TEs zu helfen sondern nur rumzumeckern, wieso klinkst du dich dann überhaupt hier ein ?

    Ein paar Links für floori, damit die Codes klarer werden, wenn er dennoch eine Erklärung will soll er die Bekommen.

    Hier ein Link zur doku für Umlaute.
    Hier einer zu Namensräumen und deren Schlüsselwörtern in C++.

    Edit: Ich glaube floori ist inzwischen gar nicht mehr dabei.



  • Kommt jetzt mal runter. Langsam wird die Diskussion persönlich.



  • Hacker schrieb:

    Nein, die Werte sind richtig. Du hast höchstwahrscheinlich einfach keine Lust gehabt nachzusehen, ob Sie korrekt waren oder nicht.

    Ich habe übersehen, dass das Oktalwerte sind, deshalb der Irrtum. Dass du aber dann weiter unten in deinem Post den Link zu den Umlauten postest, wo klar erklärt wird, dass die "inline-Umlaute" nur Nachteile haben, aber sie selbst verwendest, ist einfach nur lächerlich.

    Hacker schrieb:

    Und wenn du sogar offen zugibst keine Lust zu haben, TEs zu helfen sondern nur rumzumeckern, wieso klinkst du dich dann überhaupt hier ein ?

    Weil der TE vermutlich eh nicht mehr mitliest. Und dir werde ich die Welt sicherlich nicht erklären. Kauf dir ein Buch.



  • 314159265358979 schrieb:

    Hacker schrieb:

    Nein, die Werte sind richtig. Du hast höchstwahrscheinlich einfach keine Lust gehabt nachzusehen, ob Sie korrekt waren oder nicht.

    Ich habe übersehen, dass das Oktalwerte sind, deshalb der Irrtum. Dass du aber dann weiter unten in deinem Post den Link zu den Umlauten postest, wo klar erklärt wird, dass die "inline-Umlaute" nur Nachteile haben, aber sie selbst verwendest, ist einfach nur lächerlich.

    Du bist lächerlich. Im Text wird eben grade darauf hingewiesen, dass man bei deiner Version einen höheren Programmieraufwand hat. Mal wieder faul ?

    Edit:

    Wie schon gesagt. Wieso klinkst du dich ein, wenn du mir nix erklären willst ? Nur nerven ?



  • Höherer Aufwand != Nachteil



  • (Höherer Aufwand != Nachteil) == Bewusst && Kommt_drauf_an



  • Hacker schrieb:

    Du bist lächerlich.

    Ihr seid beide lächerlich. Schlimm genug, dass ihr für eure Kindereien erneut einen Thread hijacken müsst.



  • du == doof
    kopf->tisch



  • Nexus schrieb:

    Hacker schrieb:

    Du bist lächerlich.

    Ihr seid beide lächerlich. Schlimm genug, dass ihr für eure Kindereien erneut einen Thread hijacken müsst.

    Tut mir leid. Kann ein Mod diesen Dreck wieder löschen 😞



  • Hacker schrieb:

    Nexus schrieb:

    Hacker schrieb:

    Du bist lächerlich.

    Ihr seid beide lächerlich. Schlimm genug, dass ihr für eure Kindereien erneut einen Thread hijacken müsst.

    Tut mir leid. Kann ein Mod diesen Dreck wieder löschen 😞

    Einsicht ist der erste Weg zur Besserung. Dass du deine Schwachsinnsposts loswerden möchtest, kann ich voll und ganz nachvollziehen.



  • Dieses Kompliment kann ich leider nicht zurückgeben, bist du zu faul zum bereuen ?



  • Kurze Frage zwischendurch: Warum ist endl schlecht?
    (Kein versteckter Diskussionsbeitrag, ehrliche Frage - das hab' ich bisher nämlich noch nirgends gelesen.)



  • dennis.cpp schrieb:

    Kurze Frage zwischendurch: Warum ist endl schlecht?
    (Kein versteckter Diskussionsbeitrag, ehrliche Frage - das hab' ich bisher nämlich noch nirgends gelesen.)

    Zusätzlich zu \n macht endl auch noch stream.flush(), welches meistens nicht gebraucht wird und die Ausgabe (bei cout eher nicht, aber bei anderen Streams möglicherweise) verlangsamt. Wenn du \n willst, dann sag auch \n und nicht endl 😉

    @Hacker: Versuchs gar nicht erst.



  • gelöscht...@pi: Bitte, was anderes als du hätt ich auch nicht geschrieben.


Anmelden zum Antworten