Noob Fragen (8); letzte Anzahl von Zahlen wird nicht ausgegeben + allg. Fragen



  • Hi Leute,
    ich bins wieder euer Noob. Hatte ne kurze Künstlerpause eingelegt und werde euch wieder mit paar einfache Fragen erfreuen die nächste Zeit.
    Also ich wollte ein Code-Snip schreiben, welcher ausgibt wieoft eine Variable eingetippt wurde. Bsp.: Bei der Eingabe von "1 2 2 3 3 3 4 4 4 4 5 5 5 5 5" sollte mit die Konsole angeben, dass einmal die 1, zweimal die 2, dreimal die 3 usw. eingetippt wurde. ABER jetzt kommts ... aber wenn ich diese Zahlen eingebe "1 2 2 3 3 3 4 4 4 4 5 5 5 5 5" sagt der mir nicht wie oft die 5 eingetippt wurde 😮

    Dann habe ich noch einige Fragen, warum ich diesen und jenen Befehl machen musste. ( Den Schnip habe ich zwar versucht zu verstehen ... musste dann aber schließlich vieles einfach nur abschreiben ). Die Fragen stehen da als Kommentare.

    Hier ist der Snip:

    #include <iostream>
    using namespace std;
    int main ()
    {
        int currVal = 0;
        int val = 0;
        if (cin >> currVal) // was würde das ausgesprochen heißen? Vielleicht wenn
    
    // eingegeben wird dann entspricht es currVal ...
        {
            int cnt = 1;    // ... dann zähl 1 ?( Warum initiieren wir eigentlich                                                            
    
    // immer die Variablen mit 0 und cnt mit 1?)
            while (cin >> val) 
            {
                if (val == currVal) // Was heißt das "=="?
                    ++cnt;
                else    // Wenn ich mir nur die engl. Bedeutung anschaue dann macht   
    
    // else keinen Sinn, weil oben sagt er ja, er soll 1 dazu zählen wenn currVal  
    
    // nochmal eingegeben wird ... und jetzt sagt er, sonst (else) soll er das     
    
    // ausgeben (s.unten)
                {
                    cout << currVal << "occurs " << cnt << " times" << endl;
                    currVal = val;
                    cnt = 1;
                }
            }
           cout << currVal << "occurs " << cnt << " times" << endl; // Den Sinn    
    
    // dieses Stückes verstehe ich gar nicht,weil wir ja schon oben diesen Teil    
    
    // geschrieben hatten.
        }
        return 0;
    }
    

    Ja ich hoffe ich konnte einigermaßen erklären wo es bei mir hängt derweilen. Den Snip habe ich übrigens von dem Herrn Lippman bzw. aus seinem Buch Primer. 😋

    Mfg,
    Noobikowski


  • Mod

    Hast du das Buch mal gelesen, anstatt nur den Code abzuschreiben? Was Variablen sind, was "==" bedeutet oder wie std::cin funktioniert, das wird dir hier kaum jemand erklären wollen. Das ist gerade die Aufgabe eines Lehrbuchs, dir das bei zu bringen. Das steht da auch garantiert drin.

    Der Code macht übrigens nicht das, was du beschreibst. Hast du das beim Testen nicht bemerkt? Der zählt, wie oft die gleiche Zahl hintereinander eingegeben wurde. Und das tut er erst, wenn eine andere Zahl eingegeben wird oder wenn die Eingabe zu Ende ist. Um die Anzahl der 5en in deinem Beispiel zu erhalten musst du also die Eingabe beenden (CTRL+D in Linuxkonsolen; CTRL+Z in Windowskonsolen; oder noch irgendwas anderes, je nach Eingabemethode); eine andere Zahl eingeben; oder einen Fehler erzeugen (z.B. einen Buchstaben eingeben), damit cin >> val nicht mehr true ergibt.

    P.S.: Heh! Genau das gleiche war doch auch schon Frage und Antwort in deinem letzten Thread! 😡 Hältst du uns für dumm? Wenn du nichts aus den Antworten lernst, hilft dir auch niemand mehr.



  • Tut mir Leid Sepp, aber deine Antwort ist echt eine Zumutung.

    SeppJ schrieb:

    Hast du das Buch mal gelesen, anstatt nur den Code abzuschreiben? Was Variablen sind, was "==" bedeutet oder wie std::cin funktioniert, das wird dir hier kaum jemand erklären wollen. Das ist gerade die Aufgabe eines Lehrbuchs, dir das bei zu bringen. Das steht da auch garantiert drin.
    [/b]

    Wie ich schon oft erwähnt habe, sind meine Englisch-Kenntnisse nur bedürftig. Ich lese mich trotzdem durch den Primer, weil er mir einerseits vom Forum für angemessen empfohlen worden ist und mich - trotz Lernbehinderung (deiner Meinung nach) - das Programmieren sehr erfreut. Ich bin vielleicht wirklich bisschen schwer von Begriff ... Das erkenne ich ja selbst, wenn mir bei fast jedem Code viele Sachen unklar sind. Trotzdem würde ich gerne in den informationstechnischen Bereich gehen nach meinem Abi. Ich dachte dabei würde ein bisschen Selbststudium nicht schaden .

    SeppJ schrieb:

    P.S.: Heh! Genau das gleiche war doch auch schon Frage und Antwort in deinem letzten Thread! 😡 Hältst du uns für dumm? Wenn du nichts aus den Antworten lernst, hilft dir auch niemand mehr.

    **

    Tut mir Leid, aber ich sah nur minimale Überschneidungen mit dem jetzigen Thread, da das Problem ja wohl erst bei der Beantwortung der Frage bewusst wird. In meinem letzten Thread wusste ich nicht wie ich eine Schleife beende. Die Konsole spuckte nix aus. Die Antwort war ein einfacher break-Befehl.
    Diesesmal wird nur ein Teil des Programms bzw. das was es tun sollte ausgeführt. Und beim letzten Thread wurde mir auch Strg+Z empfohlen und da habe ich auch shcon gesagt, dass auf der Konsole dann ^Z steht und ich nicht weiß inwieweit mir das helfen soll und die Schleife beenden soll.
    Und euch für dumm halten? Mhmmm ich weiß nicht, würdest du jemanden, den du für dumm hälst, Fragen stellen, dessen Antworten du auf jeden Fall wissen möchtest. Nö, ich halte euch eigentlich für sehr hilfreich - gerade durch eure Kompetenz. Und falls du das im Sinne von "verarschen" meinst oder denkst, dass ich euch als meine kleine Denkfabrik benutze, dann muss ich dir leider sagen, dass ich mir ziemlich bewusst bin, dass dies mir einen feuchten ****** nützt euch ein bisschen grübeln zu lassen.
    Aber ich werde vielleicht fürs Erste das Fragestellen dann lieber lassen und den Primer und auf jeden Fall nochmal ein deutsches Buch durchlesen, bevor ich weiter Threads stelle.

    SeppJ schrieb:

    Der Code macht übrigens nicht das, was du beschreibst. Hast du das beim Testen nicht bemerkt? Der zählt, wie oft die gleiche Zahl hintereinander eingegeben wurde. Und das tut er erst, wenn eine andere Zahl eingegeben wird oder wenn die Eingabe zu Ende ist. Um die Anzahl der 5en in deinem Beispiel zu erhalten musst du also die Eingabe beenden (CTRL+D in Linuxkonsolen; CTRL+Z in Windowskonsolen; oder noch irgendwas anderes, je nach Eingabemethode); eine andere Zahl eingeben; oder einen Fehler erzeugen (z.B. einen Buchstaben eingeben), damit cin >> val nicht mehr true ergibt.

    **

    Ich bedanke mich trotz der harten Kritik für deine Antwort, die du wahrscheinlich unter gewissem Reiz geschrieben hast. Das bestätigt mir nur, dass du es wahrscheinlich nicht böse mit mir meinst.

    Mfg,
    Noob

    P.S.: Ja dann bis in paar Monaten, wenn ich klüger und weiser bin.



  • DerNewb schrieb:

    Strg+Z empfohlen und da habe ich auch shcon gesagt, dass auf der Konsole dann ^Z steht und ich nicht weiß inwieweit mir das helfen soll und die Schleife beenden soll.

    Alleine dadran sieht man das du nicht richtig liest!

    SeppJ schrieb:

    (CTRL+D in Linuxkonsolen; CTRL+Z in Windowskonsolen;

    Und du wunderst dich das SeppJ sich aufregt. Lesen, denken, fragen!


Log in to reply