Ergebnis 1 bis 4 von 4

Thema: Problem...

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Problem...

    Ich hab mir einen kleines Rechenprogramm in C++ geschrieben! Hier der Quellcode:
    Code:
    #include <iostream>
    
    int artdereingabe;
    int eingabe1;
    int eingabe2;
    int ergebnis;
    
    void main(void)
    {
        printf("Hallo, willkommen zu Sebis Taschenrechner\n(Na gut, ein richtiges Taschenrechner Programm ist es ja nicht!;-)\n");
        printf("Bitte gib nun die erste Zahl ein!");
        scanf("%d",eingabe1);
        printf("Bitte gib nun die zweite Zahl ein!");
        scanf("%d",eingabe2);
        printf("Und nun gib bitte ein, wie gerechnet werden soll!\n1=Addieren\n2=subtrahieren\n3=Multiplizieren\n4=Dividieren\n");
        scanf("%d",artdereingabe);
        if(artdereingabe == 1)
        {
            printf("Addiere...");
            ergebnis = eingabe1 + eingabe2;
        }
        else
        {
            if(artdereingabe == 2)
            {
                printf("Subtrahiere...");
                ergebnis = eingabe1 - eingabe2;
            }
            else
            {
                if(artdereingabe == 3)
                {
                    printf("Multipliziere...");
                    ergebnis = eingabe1 * eingabe2;
                }
                else
                {
                    if(artdereingabe == 4)
                    {
                        printf("Dividiere...");
                        ergebnis = eingabe1 / eingabe2;
                    }
                    else
                    {
                        printf("Fehler: Du musst eine Zahl zwischen 1 und 4 eingeben!");
                    }
                }
            }
        }
        printf("Das Ergebnis ist:");
        printf("ergebnis");
    }
    Leider kommt immer, nachdem ich die erste Zahl eingegeben hab immer eine Fehlermeldung(Das Standard-Ding, Programm hat Fehler festgestellt, Rechner.exe muss nun beendet werden)

    Gibts nen Grund dafür, dass dieser Fehler kommt?

  2. #2
    Guck dir einfach mal an, wie Sachen funktionieren, bevor du sie benutzt (Doku lesen ist allgemein hilfreich). Dann wuesstest du naemlich, dass scanf (logischerweise) Pointer als Argumente will. Du uebergibst ihm ints => das Ding versucht in irgendwelchen zufaelligen Speicherbereichen rumzuschreiben, was (wiederum logischerweise) zu Segfaults fuehrt. Wenn du dir von deinem Compiler Warnungen ausgeben lassen wuerdest (und sie nicht ignorierst), haette er dir das auch gesagt (oder du verwendest einen beschissenen Compiler).

    Noch 2 andere Anmerkungen: zum einen sollte main() in C++ immer ein int zurueckgeben, mein gcc will das mit void z.B. gar nicht kompilieren (der Intel-Compiler spuckt immerhin 'ne Warning aus). Zum anderen - wenn du schon C++ verwendest, wieso benutzt du dann die IO-Libs von C? So wie du das im Moment machst, muss man nur den include in stdio.h aendern und das Ganze ist mit einem C-Compiler kompilierbar. Wenn du schon C++ machst, nimm wenigstens den Stream-IO (mit dem du btw auch dein urspruengliches Problem nicht haettest).

  3. #3
    Ich hab es jetzt nochmal verändert!
    Code:
    #include <iostream>
    
    int artdereingabe;
    int eingabe1;
    int eingabe2;
    int ergebnis;
    
    using namespace std;
    
    int main(void)
    {
        cout << "Hallo, willkommen zu Sebis Taschenrechner\n(Na gut, ein richtiges Taschenrechner Programm ist es ja nicht!;-)\n";
        cout << "Bitte gib nun die erste Zahl ein!";
        cin >> eingabe1;
        cout << "Bitte gib nun die zweite Zahl ein!";
        cin >> eingabe2;
        cout << "Und nun gib bitte ein, wie gerechnet werden soll!\n1=Addieren\n2=subtrahieren\n3=Multiplizieren\n4=Dividieren\n";
        cin >> artdereingabe;
        if(artdereingabe == 1)
        {
            cout << "Addiere...";
            ergebnis = eingabe1 + eingabe2;
        }
        else
        {
            if(artdereingabe == 2)
            {
                cout << "Subtrahiere...";
                ergebnis = eingabe1 - eingabe2;
            }
            else
            {
                if(artdereingabe == 3)
                {
                    cout << "Multipliziere...";
                    ergebnis = eingabe1 * eingabe2;
                }
                else
                {
                    if(artdereingabe == 4)
                    {
                        cout << "Dividiere...";
                        ergebnis = eingabe1 / eingabe2;
                    }
                    else
                    {
                        cout << "Fehler: Du musst eine Zahl zwischen 1 und 4 eingeben!";
                    }
                }
            }
        }
        cout << "Das Ergebnis ist: " << ergebnis;
    }
    Geht jetzt!

  4. #4
    na ja mq ... manchmal sind einfach die C IO-Routinen den streams von c++ massiv ueberlegen (gerade was formatierte Ein- und Ausgabe angeht). Ohne stdio.h koennte ich auch in c++ nicht ueberleben ...

    In diesem speziellen Fall hier hast du natuerlich recht.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •