getchar



  • warum denn?



  • meine glaskugel ist gerade auf reperatur


  • Mod



  • 314159265358979 schrieb:

    meine glaskugel ist gerade auf reperatur

    Das ist lustig, weil meine ist gerade auf Reparatur. 😉



  • ok ich versuchs nochmal 🙂

    Hallo,

    ich habe ein kleines Problem zu "getchar". Ich habe ein kleines Programm mit einer Zahlenfolge und nach jeder vollen Seite muss ich eine Taste drücken damit es weitergeht.
    Mein Ansatz:

    .
    .
    .
    zaehler=zaehler+1;
                if (zaehler=20)
                    {
                       getchar();
                    }
    

    es funktioniert aber nicht ganz.

    kann mir da jemand helfen?
    Danke im vorhinein! 🙂

    besser? 🙂



  • = ist eine Zuweisung, Vergleiche macht man mit ==.


  • Mod

    zaehler=20 ist eine Zuweisung, kein Vergleich. ABER:

    Ich habe ein kleines Problem zu "getchar". Ich habe ein kleines Programm, welches eine Zahlenfolge ausgibt und nach jeder vollen Seite möchte ich, dass man eine Taste drücken muss damit es weitergeht.

    Mein Ansatz:
    ...
    es funktioniert aber nicht ganz. Mit diesem Ansatz wird nach jeder Zeile ein Tastendruck erwartet, nicht erst alle 20 Zeilen.

    kann mir da jemand helfen?


  • Mod

    --- schrieb:

    besser? 🙂

    ja. aber noch weit entfernt von gut. Die Antwort auf Frage, ob dir jemand helfen kann, wird dir nämlich nicht weiterhelfen. Eine Antwort zu deinem Problem gibt es nicht, weil du dazu keine Frage gestellt hast. Die Frage lässt sich auch nicht unmittelbar ableiten. "Funktioniert nicht ganz" ist keine (präzise) Problembeschreibung.
    Ich würde aber empfehlen, die Bedingung im if-Statement genau unter die Lupe zu nehmen...



  • 👍
    Vielleicht ändere ich meine Meinung zum Sprachverfall doch noch. 😉



  • SeppJ schrieb:

    Mit diesem Ansatz wird nach jeder Zeile ein Tastendruck erwartet, nicht erst alle 20 Zeilen.

    wie mach ich das, das es nach 20 Zeilen ausgibt und nicht nach jeder zeile?



  • --- schrieb:

    wie mach ich das, das es nach 20 Zeilen ausgibt und nicht nach jeder zeile?

    Die Beiträge hier lesen. Und wahlweise die deutsche oder englische Sprache lernen. getchar() wird nicht ausgegeben. Oh man..



  • in den beiträgen steht nur, dass ich einen Vergleich und keine Zuweisung machen soll, dass habe ich aber schon vorher probiert und es klappt nicht.



  • Dann poste noch mal deinen neuen (am besten etwas umfangreicheren) Code.
    Grundsätzlich:

    for (unsigned i = 0; i != 100; ++i)
    {
      if (i % 20 == 0)
      {
        std::cin.get();
      }
    }
    
    // Oder:
    
    unsigned i = 0;
    while (..)
    {
      if (++i == 20)
      {
        std::cin.get();
        i = 0;
      }
    }
    


  • ok, das ist der ganze code:

    #include <iostream>
    #include <stdio.h>
    
    using namespace std;
    
    int main()
    {
        double a,e,s,zaehler;
    
        cout<<"Geben sie den Anfangswert ein: ";
        cin>>a;
        cout<<"\nGeben sie den Endwert ein: ";
        cin>>e;
        cout<<"\nGeben sie die Schrittweite an: ";
        cin>>s;
    
        printf("\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c \n",218, 196, 196, 196, 196,196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 194, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 194, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 191);
        printf("\t %c               %c                %c               %c\n", 179,179,179,179);
        printf("\t %c    %s     %c       %s      %c       %s     %c \n", 179, "x-Wert",179, "x^2", 179, "1/x", 179);
        printf("\t %c               %c                %c               %c\n", 179,179,179,179);
        printf("\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c  \n",195, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 197, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 197, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 180);
    
        while(a<=e)
            {
                printf("\t %c %10.1f %4.0c %12.1f %3.0c %9.6f %5.0c\n", 179, a, 179,a*a, 179, 1/a, 179);
                a = a+s;
                zaehler=zaehler+1;
                if (zaehler==20)
                    {
                        getchar();
                    }
            }
        printf("\t %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c  \n",192, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 193, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 193, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 217);
    
        return 0;
    }
    


  • Siehe oben. Du musst die Variable entweder wieder auf 0 setzen, oder mit dem Modulo Operator prüfen, ob sie durch 20 teilbar ist. Denn so kann "zaehler" die Bedingung == 20 ja höchstens ein Mal erfüllen.



  • ok, danke cooky, ich habs jetzt 🙂



  • upsi, hab die zweite Seite nicht gesehen :xmas1:



  • fail?



  • cooky451 schrieb:

    fail?

    Wie gesagt, hab die zweite Seite nicht gesehen.


Anmelden zum Antworten