Taschenrechner



  • Code-Hacker schrieb:

    Was bringt die config.h???
    Code-Hacker

    Naja in diesem Fall sicher nicht viel. Da stehen OS-abhängige defines drin.
    Sie wird in der Regel vom configure script generiert und ist eine große Hilfe wenn du dein Programm portabel halten willst. Ist son unix ding 😉 *gg
    KDevelop erstellt automatisch entsprechende scripts u.a. auch ein(mehrere) makefile(s) das zur Compilierung deines Projekts verwendet wird



  • Hi,
    es läuft leider immer noch nicht richtig,
    ich bekomme weder eine Fehlermeldung, noch eine Warnung.
    😕 Könnte es bitte jemand der Kdevelop 2,1 besitzt es testen.
    🙄 Ich bekomme vor der eingabe der zweiten zahl, also vor dem
    3en cin ➡ , gleich als ergebniss eine null ausgegeben.

    MfG Max



  • du hast auch das Problem, dass du den Tastatur Buffer nicht richtig ausliest. Aber der Thread ist nicht Linux spezifisch. Deswegen ab in das C++ Forum



  • Hmm,
    ich hab vorhin hier irgendwas von eingabepuffer lehren gelesen,
    da es auf einem anderen compiler läuft und bei mir nicht könnte
    es ja das sein oder?Naja, ich versteh halt noch nicht viel von
    c++.Wenn das stimmt was ich denke ging das irgendwie so:

    cin.sync 
    //oder 
    cin.sync()
    

    Naja wird es wohl nicht sein,
    ich probiers mal aus.

    Vielen dank für die vielen antworten,
    ich freu mich jetzt einmal schon über die
    zukünftigen. 😃

    cu Max



  • Jo,
    wäre cool wenn mir jemand helfen könnte,
    es läuft also immer noch nicht aber der code muss
    ja eigentlich stimmen, was muss ich tun?

    Vielen dank im vorraus
    Max



  • #ifdef HAVE_CONFIG_H 
    #include <config.h> 
    #endif 
    //wichtige Header Dateien 
    #include <iostream.h> 
    #include <stdlib.h> 
    
    int main(){ 
    
    //Variablen erzeugen 
    float erste_zahl; 
    float zweite_zahl; 
    char rechenzeichen; 
    float ergebniss; 
    
    //eingabe der zahlen 
    cin >> erste_zahl;
    cin.sync();
    cin.clear();
    
    cin >> rechenzeichen; 
    cin.sync();
    cin.clear();
    
    cin >> zweite_zahl;
    cin.sync();
    cin.clear();
    
    //Auslesung des Rechenzeichens und die daraus resultierende berechnung 
    if (rechenzeichen == '+') 
    ergebniss = erste_zahl + zweite_zahl; 
    
    else if (rechenzeichen == '-') 
    ergebniss = erste_zahl - zweite_zahl; 
    
    else if (rechenzeichen == '*') 
    ergebniss = erste_zahl * zweite_zahl; 
    
    else if (rechenzeichen == '/') 
    ergebniss = erste_zahl / zweite_zahl; 
    
    //Ausgabe des ergebnisses 
    cout << ergebniss; 
    
    return 0; 
    }
    

    Probier das mal, mehr fällt mir auch nicht ein.

    Code-Hacker



  • Jo,
    ersteinmal vielen dank wegen der zahlreichen antworten,
    👍 besonders an Code-Hacker.Leider geht das programm
    trotz der zahlreichen verränderungen immer noch nicht,
    also man kann bekommt als ergebniss eine 0 bevor man
    die dritte zahl eingeben kann,also beim dritten cin.
    Naja vielleicht findet ja noch jemand den Fehler,
    wäre nett.

    cu Max



  • Jo,
    ist nun auch nicht so schlimm, 😃
    ➡ programmier ich halt wieder unter windoof.
    Was solls?, falls jemand doch ne lösung hat
    würd ich mich darüber freuen.

    Nochmals vielen dank und cu
    Max



  • wie wär's mit cin.ignore() od. cin.ignore(cin.rdbuf()->in_avail()) vor dem einlesen?

    #include <iostream> /* die neuen header sind ohne .h */
    #include <cstdlib>  /* die alten c-header ohne .h und mit c vorne dran */
    using namespace std; //alles in den headern steht im namensraum std
    //der erst aufgemacht werden muss.
    
    int main(){  
    
    //Variablen erzeugen ist am Anfang schlecht. Erzeug sie, wenn du sie
    //brauchst.  
    
    //eingabe der zahlen  
    double erste_zahl;  //einfach gleich double.  
    cin >> erste_zahl; 
    
    char rechenzeichen;  
    cin >> rechenzeichen;
    
    double zweite_zahl;
    cin >> zweite_zahl; 
    
    //Auslesung des Rechenzeichens und die daraus resultierende berechnung  
    //vielleicht wäre dafür ne extra funktion schon schön :)
    double ergebnis;
    
    if (rechenzeichen == '+')  { //gruppieren und einrücken sind ein muss;
    	ergebnis = erste_zahl + zweite_zahl; //zumindest am anfang.
    } else if (rechenzeichen == '-') {
    	ergebnis = erste_zahl - zweite_zahl;
    } else if (rechenzeichen == '*') {
    	ergebnis = erste_zahl * zweite_zahl;  
    } else if (rechenzeichen == '/') {
    	ergebnis = erste_zahl / zweite_zahl;  
    }
    
    //Ausgabe des ergebnisses  
    cout << ergebnis << '\n';  //'\n' mit ausgeben ist nett ;)
    
    return 0;  //return 0; ist überflüssig.
    }
    

    funktioniert bei mir (gcc 3.2) prima...

    statt den 3zeilen einlesen ginge auch:

    cin >> erste_zahl >> rechenzeichen >> zweite_zahl;
    

    gib ein 3 + 7 (ohne enter dazwischen) und drück am ende enter.
    wenn du's so machst, dann lass auf jedenfall das sync/ignore weg.

    ps ergebnis schreibt man mit einem s 😉



  • Jo,
    vielen dank 👍 für deine antwort ich werd´s
    gleich ausprobieren.Die vielen Fehler
    kommen dadurch das ich ganz neu in c++ bin.

    Da meine Hilfe unter windows(Visual c++ autoran)und
    linux(Kdevelop 2,1)nicht geht muss ich alles aus
    Büchern und tuts lernen, kennt jemand eine gute
    Befehlsliste zu Kdevelop oder Visual c++ falls es
    soetwas geben sollte?

    Vielen dank im vorraus.(und nachherraus)

    cu Max


Anmelden zum Antworten