[HELP] Mein erstes c++ Program.



  • ok ich hoff das ich mich nicht vertuhe aber normal sollt das so funktionieren

    mose schrieb:

    std::cin.clear();

    löscht den tasterturbuffer (wenn du was eingegeben hast wird das dorthin geschrieben)

    mose schrieb:

    std::cin.ignore(std::cin.rdbuf()->in_avail());

    ignoriert neuerliche eingaben in den buffer?? (sorry weis auch nicht so genau)

    mose schrieb:

    std::cin.get();

    wartet auf eine tastertur eingabe von dir (deswegen löscht du den buffer vorher, sonst würd erst wieder durchrutschen

    hoff du hast verstanden bzw. hab dir da keinen bären aufgebunden



  • Ahso. Jetzt verstehe ich das. Der erste Befehl verhindert das sich das fenster schließst. Der zweite müsste die gleiche Aufgabe haben :p und der letze beendet das Program wenn man ne Taste drückt.



  • Peace_VsC schrieb:

    ok ich hoff das ich mich nicht vertuhe aber normal sollt das so funktionieren

    mose schrieb:

    std::cin.clear();

    löscht den tasterturbuffer (wenn du was eingegeben hast wird das dorthin geschrieben)

    Nope. clear() löscht alle eventuellen Fehlerbits des assoziierten Streams und gibt dem Stream den Status, der durch das Argument von clear spezifiziert wird (Defaultmäßig ist das ios::godbit).

    mose schrieb:

    std::cin.ignore(std::cin.rdbuf()->in_avail());

    ignoriert neuerliche eingaben in den buffer?? (sorry weis auch nicht so genau)

    Diese Zeile löscht (bzw. ignoriert) alle Zeichen aus dem Eingabepuffer. Oder mit anderen Worten leert den Eingabe-puffer.

    mose schrieb:

    std::cin.get();

    wartet auf eine tastertur eingabe von dir (deswegen löscht du den buffer vorher, sonst würd erst wieder durchrutschen

    Wartet auf einen Tastendruck

    Caipi



  • ok fast daneben ist auch vorbei 😃



  • Irgentwie spinnt Dev-C++ bei mir rum. Er zeigt mir einen Fehler an wo keiner ist.

    44 c:\dokume1\mose\eigene1\sa11~1.cpp
    parse error before `<'

    #include <iostream>
    using namespace std;
    int main ()
    
    {
       cout<<"******************************************************************************"<<endl;
       cout<<"*Das Program kann die 3 Binomischen Formeln rechen                           *"<<endl;
       cout<<"*Bitte geben Sie erst die Faktoren ein. Danach koennen Sie die Formel        *
    *aussuchen.                                                                  *"<<endl;
       cout<<"******************************************************************************"<<endl;
    
       int a;
       int b;
       int c;
    
       const int l1=1;
       const int l2=2;
       const int l3=3;
       cout<<"Bitte geben sie den Faktor a ein.";
        cin>>a;
       cout<<"Bitte geben sie den Faktor b ein."<<endl;
        cin>>b;
        cout<<"******************************************************************************"<<endl;
       cout<<"*Mit welcher Formel wollen Sie fortfahren? Fuer die erste binomische Formel  *  *druecken sie die 1 . Fuer die zweite die 2 und fuer die dritte die 3.       *"<<endl;
        cout<<"******************************************************************************"<<endl;
        cin>>c;
    
       if(c==l1)
             cout<<"Das Ergebnis ist: "<<((a+b)*(a+b))<<endl;
    
       if(c==l2)
             cout<<"Das Ergebnis ist: "<<((a-b)*(a-b))<<endl;
    
       if(c==l3)
             cout<<"Das Ergebnis ist: "<<((a+b)*(a-b))<<endl;
    
        else
       cout<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl;
         cout<<"!Leider gibt es keine vierte binomische Formel!                            !"<<endl;
       cout<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl
    
       cout<<"******************************************************************************"<<endl;
       cout<<"*Dieses Program wird noch erweiter und wenn nötich komplet verwendert.       *"<<endl;
       cout<<"******************************************************************************"<<endl;
    
      std::cin.clear();
      std::cin.ignore(std::cin.rdbuf()->in_avail());
      std::cin.get();
    
     return 0;
    
    };
    


  • Abgesehen von der Rechtschreibung:

    -> 3. cout-Ausgabe -> Zeilenumbruch innerhalb einer Konstanten
    -> 3. cout nach else -> Es fehlt der Strichpunkt am Ende

    BTW: Dein else ist sicherlich auch nicht so gedacht: Nur eine der 3 cout nach dem else wird als else ausgeführt, der Rest wird immer ausgeführt -> Grund: else ohne Klammer nimmt nur die nächste Anweisung als else-Zweig an -> Lösung:

    else
    {
        cout ...
        ...
    }
    

    MfG SideWinder



  • OK danke . ^^



  • Bashar schrieb:

    otze schrieb:

    code [..], der seit mehr als 15 jahren nicht mehr benutzt werden sollte. 1989 wurde der neue C++ standard verabschiedet

    1998

    *seufz* zahlendreher..sind trotzdem imernoch 7 Jahre



  • Du solltest die vor die letzten beiden ifs ein else schreiben, da sonst auch bei der zweiten binomischen Formel der Hinweis mit der vierten kommt. (die es übrigens doch gibt) :p



  • ja ? und wie lautet die denn?



  • a2+b2=(a+bi)(a-bi)



  • Das ist nur ein Spezialfall der dritten.



  • Und die erste und zweite sind identisch...



  • du kannst statt dem else if auch ein switch nehmen...

    und statt die l1-l3 variablen zu benutzen, die zahlen direkt in die if bzw. switch abfrage reinschreiben....

    ich hätt eine frage zu den .h und ohne .h headerfiles:

    welche betrifft das genau?

    doch nicht nur iostream oder?

    MfG Kuldren





  • das habt ihr hier irgendwo eben angesprochen.
    Welche von den ist jetzt genau für das leeren von den Puffer?
    bei mir geht das nicht so ganz wie es eigentlich sollte bzw. ich dachte.

    mfg



  • der link geht nicht



  • Sama, kann mir mal einer erklären, wer euch allen beigebracht hat using namespace std; zu verwenden? DAS ist pervers... wie wäre es, wenn man mal einfach schön immer std:: davor setzt?!



  • Das ist doch für das Programm völlig sinnfrei, vor jedes cout usw. ein std:: zu schreiben. Da in dem Programm nur ein Namensraum verwendet wird seh ich den Sinn in dieser überflüssigen Schreibarbeit nicht.



  • Was zum Teufel ist an void main() eigentlich so übel? Java machts genauso. Das ist doch reine Ansichtssache. Sicher, wenn du nen Programm hast, bei dem du auf der Kommandozeile den Rückgabewert überprüfen willst (shell-scripte etc.), nimmste int main(). Ansonsten gibts an void main meines Erachtens rein gar nichts auszusetzen. Gegenargumente? Kommt mir nicht mit schlechter Stil, das liegt im Auge des Betrachters.


Anmelden zum Antworten