Frage von ElClown, 31

C++ Bug/Problem?

Hey Leute...ich bin Grad am programmieren und hab ne schleife um pi anzunähern, allerdings kommt nur ein sinnvolles Ergebnis raus, wenn ich mir zwischendurch für jede Iteration eine Variable anzeigen lasse...wo liegt da der Sinn??? Ich benutze Code Blocks mit GCC compiler auf win10

Antwort
von gfntom, 11

Wie die anderen hier sagen: ohne Code bekommst du maximal Mutmaßungen und Spekulatione.

Falls du das willst, hier ist meine Spekulation:
Ein Teil des Codes wird bedingt durchlaufen (eventuell auch durch Optimierungen, die der Compiler vornimmt.)
Die Ausgabe ist so programmiert, dass eine Abarbeitung dieses Codes erzwungen wird.

Antwort
von ElClown, 5
#include <iostream>
#include <math.h>

using namespace std;

int pi(double it)

{
     double b=2*it, s=0, hv, h;
     for (double i = 1; i <= it; i++) {
        hv=h;
        h=sqrt(i*(b-i));
        cout << hv<<endl<<h<<endl;
        hv=h-hv;
   s+=sqrt(hv*hv + 1);
}

    return s;

}

int main()
{
    double it;
    cin >> it;
    double ergebnis= pi(it);
    cout << "PI ist:" << ergebnis/(it/2);
    return 0;
}

Hier der C++ Code

Kommentar von karajan9 ,

Magst du dann gerade noch sagen, was das Problem ist, als was du gerne hättest und was stattdessen passiert?

Einen Fehler, den ich sponant sehe ist, dass du hv und h benutzt, ohne sie vorher zu initialisieren, also = 0 zu setzen. Wenn du Glück hast geht das gut, muss es aber nicht.

Kommentar von ElClown ,

Das wars problem

Kommentar von TeeTier ,

Die Funktion liefert "int" statt "double" zurück!

Antwort
von New2016, 17

Zeig doch einfach mal den Quellcode, dann kann man dir auch helfen...

Antwort
von karajan9, 15

Ich habe mir deine Frage durchgelesen und keine Ahnung, was du willst und was genau das Problem ist. Vielleicht müsstest du das noch mal genauer erklären.

Selbst wenn ich das wüsste -- ohne deinen Code zu kennen wird dir wohl kaum jemand helfen können. Und wenn du den noch postest, mach das doch bitte mit der Code-Funktion hier :-)

Antwort
von ElClown, 4

Hat sich geklärt...hab vergessen h am Anfang auf 0 zu setzen! Danke für eure Antworten ;D

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten