pi mal Daumen berechnen



  • Hallo liebe Forengemeinde,

    Ich hab ein kleines
    Programm geschrieben,
    dass Pi*Daumen berechnet,
    es funktioniert aber
    nicht so wie ich will.

    #define M_PI 3,14
    
    void main()
    {
        fprintf(stdout, "Geben Sie ihre Daumenlänge ein!");
        char* eingabe;
        eingabe = new char[20];
        gets(eingabe);
    
        int daumenlaenge = atoi(eingabe);
        cout << "Pi mal Daumen ist bei ihnen " << eingabe * M_PI << endl;
    }
    

    Mein Programm stürzt mit der Fehlermeldung "kann cout nicht finden" oder so ähnlich ab.

    Grüße,
    Anton



  • Achja, ich bin neu bei
    C++ und ich lerne das
    für die Schule, also
    habt bitte etwas Nachsicht. 🙂



  • Hallo Anton!
    Hast du irgendwelche header eingebunden?
    cout braucht <iostream>.
    Wenn ja, dann hast du wahrscheinlich keinen namespace hinzugefügt!

    entweder:

    using namespace std;
    

    oder

    std::cout<<
    

    PS: warum arbeitest du mit fprintf, char* und eingabe()?
    nimm doch std::cout, std::string und std::cin!
    [EDIT]: noch was, definiere PI nicht über #define, sondern so:

    const double Pi=3.14159.....
    

    mfg
    syntax



  • #include <iostream>
    #define M_PI 3,14
    using namespace std;
    
    void main()
    {
        fprintf(stdout, "Geben Sie ihre Daumenlänge ein!");
        char* eingabe;
        eingabe = new char[20];
        gets(eingabe);
    
        int daumenlaenge = atoi(eingabe);
        cout << "Pi mal Daumen ist bei ihnen " << (*eingabe * M_PI) << endl;
    }
    

    -- den Rest ergänzt der Beitrag über mir, der von dir gezeigte Code ist so zumindest lauffähig.


  • Mod

    Yada schrieb:

    -- den Rest ergänzt der Beitrag über mir, der von dir gezeigte Code ist so zumindest lauffähig.

    Nein, in vielfacher Hinsicht nicht:
    http://ideone.com/wVtbn

    #include <iostream>
    #define PI 3.14   // Punkt statt Komma. M_PI Bezeichner ist reserviert und WIRD auch tatsächlich so benutzt
                      // Wird daher höchstwahrscheinlich kollidieren.
    using namespace std;
    
    int main()          // int statt void
    {
     cout << "Geben Sie ihre Daumenlänge ein!\n";  // fprintf ist nicht in iostream und cout zu nutzen ist sowieso konsistenter
    //    char* eingabe;               // einfach nur schrecklichm die vier Zeilen
    //    eingabe = new char[20];
    //    gets(eingabe);
    
    //    int daumenlaenge = atoi(eingabe);
    
     // Besser:
     double daumenlaenge;
     cin >> daumenlaenge;
    
     cout << "Pi mal Daumen ist bei ihnen " << daumenlaenge * PI << endl; // Keine Klammern nötig, * bindet stärker als <<
    }
    


  • #define M_PI 3,14 Code ist so zumindest lauffähig

    genau...

    wenn ich PI brauche, mach ich das eigtl immer so:

    #include <cmath>
    #ifndef M_PI
    # define M_PI 3.14159
    #endif
    
    /*...*/
    

    alternativ über eine konstante, hab ich mir aber bisher immer verkniffen, weil angst vor fremden defines ohne ifndef...

    bb


Anmelden zum Antworten