Wurzel



  • hey!
    ich als anfänger hab mir mal gedacht
    wie symboliesiere ich eine Wurzel.
    ein Quadrat ist klar: Zahl*Zahl
    aber Wurzel ist da schon unklarer.
    Nun, da dacht ich mir: schreibn wir halt n programm.
    hier der scheiternde versuch (omg):

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int intAusgabe;       
        int intEingabe=intAusgabe*intAusgabe;
    
        cout<<"Geben Sie eine Zahl ein! \t";
        cin>>intEingabe;
        cout<<"\n"<<intAusgabe<<"\n\n";
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • Was klappt genau nicht und wie was hat das mit Wurzeln zu tun?

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int intAusgabe;      
        int intEingabe=intAusgabe*intAusgabe; // du schreibst Speichermüll² in Eingabe
    
        cout<<"Geben Sie eine Zahl ein! \t";
        cin>>intEingabe;                      // jetzt wird Speichermüll² wieder überschrieben
        cout<<"\n"<<intAusgabe<<"\n\n";       // da ist aber noch Speichermüll drin
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Du musst Ausgabe einen Wert verpassen, sonst steht da das, was gerade and er Stelle zufällig im Speicher noch rumgammelte.
    Es müsste in <cmath> eine Funktion für die Wurzel geben. Schau doch da mal nach.

    Panke



  • #include <iostream>
    #include <math.h>
    using namespace std;
    
    int main()
    {  
        cout<<"Geben Sie eine Zahl ein! \t";
    
        int intEingabe;
        cin>>intEingabe;
    
        const int quadrat = intEingabe * intEingabe;      
        cout<<"\n"<<quadrat<<"\n\n";
    
        const double wurzel = sqrt( intEingabe);
        cout<<"\n"<<wurzel<<"\n\n";
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • cmath???
    was IST cmath überhaupt...sorry aber...
    wo find ich das eigentlich?!
    ist das schlimm, dass ich das nicht kenn?



  • Hallo,
    Mir ist zwar dein Gedanke nicht ganz klar, den du mit diesem Programm ausdrücken willst, aber:

    1. Variablen, die lokal definiert werden, haben bei ihrer Definition einen undefinierten Anfangswert. => Du initialisierst intEingabe mit dem undefinierten Wert von intAusgabe * intAusgabe... (der noch dazu später wieder überschrieben wird...)

    Btw.: Um quadratwurzeln zu ziehen, kannst du dich auch der Funktion std::sqrt() aus cmath bedienen :).

    /edit: man bin ich lahm 😮...

    Gruß Caipi



  • <cmath> ist eine Headerdatei.

    #include <cmath>
    
    int a = 25;
    int b = std:sqrt(a);
    
    // b ist nu 5
    


  • ^^verstehe...und wo sehe ich was alles in der header drinsteht?



  • Öffnen oder nach ner Referenz googeln.



  • und was stimmt hier nun wieder nicht?!

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int main()
    {
        int intEingabe;
        cout<<"Geben Sie eine Zahl ein: \t";
        cin>>intEingabe;
        int intAusgabe=sqrt(intEingabe);
        cout<<"Die Wurzel ihrer Zahl betraegt: \t"<<intAusgabe;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • Funktioniert bei mir einwandfrei. Fehlermeldung?



  • ja fehler...
    beim kompilieren
    ka warum...

    aber guck´s dir doch selbst an!

    http://img240.imageshack.us/img240/5918/fehler3vy.jpg



  • #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
        int intEingabe;
        cout<<"Geben Sie eine Zahl ein: \t";
        cin>>intEingabe;
    
        double intAusgabe=sqrt(intEingabe);
        cout<<"Die Wurzel ihrer Zahl betraegt: \t"<<intAusgabe;
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Versuchs damit. Oder - wenn es denn ein Integer sein muss - mit

    int intAusgabe=(int)sqrt(intEingabe);
    


  • nee, also hilft beides nicht...ähnliche fehlermeldung...
    wtf....



  • Es gibt eine Wurzelfunktion für floats und für doubles. Dein Compiler kann sich hier nicht entscheiden welche er verwenden soll. Das geht dann so:

    sqrt( static_cast<double>(intEingabe) );
    

    Gruß



  • Der Compiler weiss nicht ob er intEingabe in einen float, einen double oder einen long double konvertieren soll. Du musst ihm dabei helfen, z.B. so:

    double intEingabe;
    


  • also das funktioniert nun:

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
        int intEingabe;
        cout<<"Geben Sie eine Zahl ein: \t";
        cin>>intEingabe;
    
        double intAusgabe= sqrt( static_cast<double>(intEingabe) );
        cout<<"Die Wurzel ihrer Zahl betraegt: \t"<<intAusgabe <<"\n\n";
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    geht´s eigentlich noch unkomplizierter?!



  • Bei mir von Anfang an ja. Ansonsten mach es wie niemand sagt und nimm keine Integer sondern nur double.



  • kk alles klar, ty


Anmelden zum Antworten