Warum gehts nich??



  • Freut mich, dass es geht.

    Also, du solltest dich jetzt dann mal sehr gut damit auseinandersetzen, sonst hängst du später ordentlich.

    Nehmen wir mal dein Programm das du ganz am Anfang gepostet hast. Was passiert nun da?

    #include <iostream.h>
    #include <stdlib.h>
    
    int main()
       { int i = 1;   //wir legen eine int-Variable namens i an und geben ihr den Wert 1
      int summe = 0;  //eine int-Variable namens Summe mit Wert 0
    
          while (i < 1000)  /solange wie i kleiner als 1000 ist mach das, was     zwischen den {} steht
          {
           summe = summe + 1;  //Summe um 1 erhöhen
           i++;  //i um 1 erhöhen
          }  //hier ist deine while-Schleife zu Ende. Wie du siehst hast du gar nichts ausgegeben. 
             //Du hast einfach nur dauernd deine Variablen um 1 erhöht. Wenn du es ausgeben willst
             //dann musst du das, was ausgibt (nämlich cout) in die Schleife schreiben
              return (i++);  //Main ist eine Funktion. Du sorgst jetzt dafür, dass diese Funtkion i+1 zurückgibt. 
                             //Das ist relativ sinnfrei, da du mit dem Wert nichts anfangen kannst.
       system("PAUSE");
    
    }
    

    Was macht der richtige Code:

    #include <iostream>
    using namespace std;
    
    int main(){
        for(int i=1;i<1001;++i) 
            cout<<i<<endl;  //das hier ist eine for Schleife. Sozusagen eine verkürzte Version für:
        /*int i=1;   //eine int-Variable namens i, in die wir den Wert 1 schreiben
          while(i<1001){  //solange i kleiner als 1001 ist
            cout<<i<<endl;  //gib den Wert von i aus und geh in eine neue Zeile
            ++i;  //erhöhe i um 1
          }*/
        cin.get();  //warte auf einen Druck auf Enter
    }
    

    Hat es etwas geholfen?



  • So langsam werdet ihr hier immer unverschämter. Wenn ihr einfach unfähig seid, könnt ihr nicht behaupten, dass der Code nicht korrekt sei.

    #include <iostream>
    
    int main()
    {
        std::cout << "Bis: " << std::endl; // "Bis: " ausgeben
        std::size_t to = 0; // lokale Variable to vom Type std::size_t (unsigned int) anlegen
        std::cin >> to; // Wert einlesen
        for (std::size_t i = 0; i < to; ++i) // von 0 bis (to - 1) hochzählen
            std::cout << (i + 1) << std::endl; // i + 1 ausgeben ...
    
        std::cin.clear(); // eingabebuffer leeren
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin.get();    // auf eingabe warten ...
    }
    

    Hab ich dir als 1. Anwort gegeben. Dabei hab ich dir sogar schon eingebaut, dass du eingeben kannst, bis wohin gezählt werde soll und das er am Ende die Konsole solange aufhält, bis du [Enter] drückst. Hättest du dir mal alle Antworten auf den Thread hier durchgelesen, wären dir einige Fehler in deinem Programm deutlich geworden. Aber du zeigst eine Ignoranz, die auch nicht durch schlichtes Unwissen zu entschuldigen ist! 😡

    Shinja
    Ist ja nett das du einen Lösungsansatz zeigst. Nur gilt auch für dich das Lesen mal angebracht wäre. Auf der 1. Seite standen mehrere Versionen. Jeweils hab ich zu den Vorschlägen Verbesserungen und Fehlerbeseitigungen angebracht. Warum bringt ihr dann noch mehr Beispiele? Das jemand nen "Hello World"-Niveau-Programm geschrieben bekommt, muss er nicht beweisen.
    Dein Programm ist übrigens auch nicht vollkommen. Hast nen paar Sachen die nicht so schön sind. Hättest du mal auf der 1. Seite gelesen was da stand, hättest auch du noch nen paar Sachen dazu gelernt. 👎

    Mit freundlichen Grüßen 😕
    Deviloper



  • Soweit ich weiß wird vorgeschrieben (oder sollte man) <iostream> statt <iostream.h> zu nutzen. Musste aber jemand anders fragen, wenn du es wissen möchtest.

    mfg



  • ? Kannst auch nicht lesen oder wie? Steht auch schon auf Seite 1.



  • @(D)Evil : Woher willst du wissen, dass ich nicht alles gelesen habe?! Habe ich und dein Code geht mit sicherheit, bin ich sicher allerdings kam nicht da raus was ich brauchte (leider weiß ich nicht mehr auswendig, was da stand sorry)! Und was das "Hello-World-Programm"Niveau angeht, weiter sind wir auch noch nicht wirklich 😉

    @Shinja : Ja hat es, danke!! Mein Problem ist halt immer, ich weiß nicht wann ich elche Schleife benutze, wann und wo ich cin oder cout schreibe usw. Wir haben schon wieder eine Aufgabe aufbekommen, die werde ich am WE mal ausprobieren... So langsam versteh ich es etwas besser denke ich 🙂



  • @DEvil: mal langsam bitte, so war das doch gar nicht gemeint. Den "richtigen" Code (also ohne das warten alle 100 Zahlen) habe ich eigentlich nur den letzten von dir nochmal kopiert und auf ein paar Zeilen aufgeteilt (und eben using namespace genutzt, ich weisz, diesbezüglich sind wir uns uneins, jedem das Seine) sowie ein simples int anstelle vom (natürlich besseren in diesem Fall) unsigned int resp. size_t genommen, weil ich davon ausgegangen bin, dass der TE vielleicht nur das normale int kennt und es in diesem Fall eigentlich keinen Unterschied macht. (es sind keine vector Indizis o.ä.)

    Ich hatte nicht vor, irgend eine deiner Varianten als falsch hinzustellen, die waren selbstverständlich allesamt richtig (man sieht in einer Menge Threads hier sehr deutlich, dass du mir an Erfahrung und Können weit überlegen bist) Ich habe nur gepostet, weil der TE sagte, ihm würde nur eine Zahl ausgegeben werden, und da das nicht am Programm liegen konnte dachte ich, es liege vielleicht an dem oben genannten Problem.

    Warum du darauf jetzt so aggressiv reagierst ist mir leider unverständlich. Ich hatte nicht vor zu kritisieren o.ä. Wenn es falsch rüber kam tut es mir leid.



  • Sorry, (D)Evil, ich kann's mir nicht verkneifen 😉 ... garantiert nicht böse gemeint!

    (D)Evil schrieb:

    std::cin.clear(); // eingabebuffer leeren
    

    Nö ... es wird nicht der Puffer geleert sondern die Flags. Den Puffer leert die nächste Zeile (also das 'ignore').



  • Hmm stimmt. Nja ne ist ja ok. Wenn jemand was wirklich konstruktives beiträgt sacht ja keiner was ...


Anmelden zum Antworten