Programm zur Wurzelberechnung bereitet mir Probleme



  • Hallo Leute. Ich soll ein Programm erstellen, dass die Wurzel einer Zahl ausrechnet. Wenn die Zahl negativ ist, zb. -7 soll sqrt(x) = 2.683i, soll die Wurzel "komplex" angezeigt werden. Mein Problem ist, dass mir der Computer immer eine komische Zahl für x ausgibt... z.b irgendetwas wie x = 0464562. y wird immer als 0 ausgegeben. Was ist an meinem Programm falsch? Es wäre super, wenn ihr mir helfen könntet.

    Danke Philipp

    #include <stdio.h>
    #include <math.h>

    int x;
    float y;
    char ch1 = 'J';

    main(void)

    {
    do
    {
    if(ch1 =='J' || ch1 == 'j')
    {
    printf("Geben Sie einen Wert fuer x ein:");
    scanf("%d",&x);

    printf("\nEingabe\n");
    printf("\n\n");
    printf("Argument: x = %i \n\n\n",&x);
    printf("Berechnung der Wurzel\n");
    printf("
    ______________\n\n");

    if (x >= 0)
    {
    y = (float)(sqrt(x));
    printf("Ergebnis: sqrt(x) = %f\n\n",&y);
    }

    else
    {
    y = (float)(sqrt((-1*x)));
    printf("Ergebnis: sqrt(x) = %f i\n\n",&y);
    }

    printf("Erneute Eingabe? (j/n)");
    }
    else
    {
    printf("Falsche Eingabe\n");
    }
    scanf("%s", ch1);
    }
    while(ch1 =='N' || ch1 == 'n');

    return 0;
    }



  • Du musst beim Ausgeben y übergeben, nicht &y.

    Und C ist nicht C#.



  • Ich habe einen Fehler gerade heraus gefunden. Ich habe in meinem ersten Programm in dem printbefehl "&x" geschrieben. Dadurch greife ich dann auf die Adresse zu anstatt auf den Wert ist das richtig? Allerdings habe ich jetzt das Problem, dass das Programm bei einer eingabe von J oder N von Windows abgebrochen wird. Eine erneute Eingabe ist also nicht möglich. Außerdem ist mir gerade aufgefallen, dass ich unten auch ch1==n anstatt ch1!=n zu schreiben. Trotzdem weiß ich nicht, wie ich die Schleife vernünftig abbrechen oder wiederholen kann. Danke nochmal!



  • Beim Einlesen entweder %s und ein char-Array oder %c und ein char, dann aber bitte dessen Adresse.



  • Danke. Klappt alles 🙂 Ich wußte nicht, das C# nicht gleich C ist. Da werde ich mir wohl ein anderes Forum suchen müssen. Trotzdem danke.



  • Ein anderes Forum brauchst du dir nicht suchen.

    Er meinte, dass du ins Unterforum "C# und .Net" deine Frage gestellt hast.
    Es gibt auch ein Unterforum "ANSI C", da könntest du das nächste Mal deine Fragen stellen.


Anmelden zum Antworten