kostenloser Webspace werbefrei: lima-city


Wurzelziehprogramm

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    l*****u

    Ich bin zwar erst knapp ?ber dem "Hellow World-Programm Macher" Stadium hinaus, aber ich hatte irgendwie das verlangen mal ein Programm zu machen, das Wurzeln ziehen kann.
    Ich habe folgendes in den Compiler eingegeben:
    #include <iostream.h>
    
    main(){
           int zahl;           //Die zahl, die der User eingibt
           int test=0;         //Die Zahl, die mit "zahl" verglichen wird
           int test2=0;        //Die Zahl, die immer um 1 erh?ht wird.
           int langmacher=0;   //Eine nutzlose zahl, die nur dazu da ist, damit es lang genug l?uft
           cout<<"Dieses Programm kann Wurzeln ziehen.\nBitte geben sie ihre Zahl ein:\n>>";
           cin>>zahl;
           while(langmacher=0){
                           if (zahl=0){                                                 //die Ausnahme
                                       cout<<"Die Wurzel aus 0 ist 0...Scherzbold";     //0 wird hiermit
                                       break;                                           //erfasst
                                       }
                           test2++;                                                     //Die n?chste Zahl wird erfasst
                           test=test2^2;                                                //Es wird getestet
                           if (test=zahl){                                              //Zahl gefunden?
                                          cout<<"Die Wurzel aus "<<zahl<<" ist "<<test2<<".\nVielen Dank, das sie dieses Programm benutzt haben.\n";
                                          break;
                                          }
                           cout<<"\nZahl noch nicht gefunden, bitte warten.\n";         //kann entfernt werden, diente nur zu Testzwecken
                           }
           system("pause");
    }


    Das Problem ist, das bei mir aus irgendeinem Grund die ganze while-Schleife ?bersprungen wird. K?nnt ihr einen Fehler entdecken?

    ignoreirt bitte die PHP-Klammern, die hab ich nat?rlich nicht gemacht :biggrin:

    Beitrag ge?ndert: 25.9.2006 18:56:55 von laberlu
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Soweit ich wei? muss es

    while(langmacher==0)

    hei?en.

    Das Gleiche gilt auch f?r die If-Bedingungen
  4. Autor dieses Themas

    l*****u

    ah, danke, das war der fehler.
    Ich krieg zwar noch mist raus (die Wurzel von 16 ist 18 :o:biggrin::biggrin:) aber der Fehler ist schon mal weg

    Beitrag ge?ndert: 25.9.2006 19:29:32 von laberlu
  5. Ich bin mir zwar nicht sicher, aber probier mal statt


    test2^2;

    test2 * test2;

    zu verwenden
  6. Autor dieses Themas

    l*****u

    jup, hab ich schon schon gemacht, jetzt klappts, komische Welt :D
    Wei? zuf?llig wer, wie man Von int in float umwandelt?
    wenn ich einfach eine floatvariable mache und ihr den Wert einer Integervariable zuweise wird die Integervariable in eine floatvariable umgewandelt und hat dadurch einen anderen Wert.
    Gab es nicht einen Befehl um das zu machen?
  7. p****7

    HI...
    die wurzel bekommst duso:
    #include <math.h>
    ....
    float wurzel=sqrt(zahl);
    cout<<wurzel;

    ....
  8. Autor dieses Themas

    l*****u

    ixh kenn mich mit den ganzen Bibloteken nicht so aus :D
  9. hm, Umwandlungen von Ganzzahltypen nach Gleitkomma geschieht meines Wissens automatisch.

    Willst du das ganze explizit hinschreiben, sieht das so aus:

    int i = float(92343,676);

    Der Nachkommateil wird dabei abgeschnitten


  10. hm, Umwandlungen von Ganzzahltypen nach Gleitkomma geschieht meines Wissens automatisch.

    Willst du das ganze explizit hinschreiben, sieht das so aus:

    int i = float(92343,676);

    Der Nachkommateil wird dabei abgeschnitten


    Ne, es muss hei?en
    int i = (int)92343,676;

    In Klammern schreibt man immer das, wohin konvertiert werden sol (man nennt das auch Cast). Allerdings gehen dabei mitunter Daten verloren. Allgemein sollte man sich auf Gleitkommadaten nicht verlassen, und vor allem sollte man NIEMALS Gleitkommawerte auf Gleicheit pr?fen :-)

    MfG,
    thw

    EDIT: Okay, was ich beschrieben hab ist ein C-Style-Cast. In C++ funktioniert auch die erstgenannte Methode. Ist allerdings in dem Fall ein bisschen sinnfrei, da unn?tigerweise Daten durch den Speicher geschaufelt werden. Da k?nnte man es vielleicht lieber direkt in int konvertieren: int i=int(92343,676);

    Beitrag ge?ndert: 11.10.2006 19:58:40 von thw
  11. Hab gerade den Thread durchgelesen. Für alle die sich hier irgendwie inspirieren wollen:
    while(langmacher) ist ja schrecklich
    while(true) führt zu einer Endlosschlaufe.

    EDIT: Falls der Thread schon zu alt ist, die Gulden sind mir eh egal. Ich wollts zur erwähnen...

    Beitrag geaendert: 25.2.2007 21:45:15 von nigolaz
  12. Mathematisch gesehen?

    Ein eigenes Programm zu schreiben, lohnt sich nur zu Übungszwecken, da es schon was in der Richtung gibt. <math.h> oder so, glaub ich. x^1/2 wäre auch ne möglichkeit...
  13. Ich empfehl dir mal, den algorithmus auf nem blatt papier vorzurechnen... schritt... f&#252;r.... schritt...

    und schau dir nochmal die synthax f&#252;r schleifen an, oh und dein cout am anfang sieht leicht vergurkt aus

    lg
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!