Pi berechnen
-
Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Naja, also erstmal hast du wie dEUs schon gesagt ein * vergessen. Und am Ende fehlt eine Klammer
Also so:u2 = n*sqrt(2-2 * sqrt(1-((u/n)*(u/n))));
-
Hi Khorne,
das mit der fehlenden ')' und dem fehlenden * haben Dir die anderen ja schon gesagt. Wenn es dann läuft, wirst Du Dich sicher wundern, dass immer die gleiche Zahl rauskommt.
Das liegt daran. dass Du das gerade berechnete Ergebnis wieder mit dem alten überschreibst. Richtig wäre:u = u2;
Wenn sich dann die Zahl ändert, aber immer größer wird, statt sich PI anzunähern, so deshalb, weil Du vergessen hast, die Variable n anzupassen. Es fehlt:
n *= 2;
Achte darauf, dass Du bei Fließkomma-Zahlen ',' nicht mit '.' vertauschst. Hier fällt es nicht auf, da die Variablen 'r' und 's' nicht benutzt werden und der Compiler das als Komma-operator interpretiert. Korrekt wäre aber
r = 0.5; s = 0.5;
Noch ein Tipp: Es ist in C++ üblich, Variablen erst dann zu deklarieren, wenn man sie benötigt. Du kannst also die globalen Deklarationen weglassen und z.B.:
double r=0.5; // Radius
schreiben.
20 statt 1000 in der for-Schleife reicht übrigends völlig aus; genauer wird's nicht.Viel Spaß weiterhin
Werner
-
Danke, ihr habt mir echt geholfen
@dEUs: was sind CodeTags ?
-
-
ok sorry,
die Frage war ziemlich dumm.das Programm läuft jetzt, stellt aber nur 5 Stellen nach dem Komma dar.
kann ich das irgendwie umgehen? oder fehlt irgendetwas?habt ihr irgend einen Internet- oder Buchtipp über die Grundlagen von C++ für mich? ich hab bis jetzt nur 'jetzt lerne ich: spiele programmieren' gelesen.
ich komm mir irgendwie blöd vor, wenn ich euch hier solche Fragen stellen muss.
-
Hallo
habt ihr irgend einen Internet- oder Buchtipp über die Grundlagen von C++ für mich?
Folge dem Link Tutorials in dem Menü oben links in dem Menü auf diese Seite
bis bald
akari
-
KHORNE schrieb:
das Programm läuft jetzt, stellt aber nur 5 Stellen nach dem Komma dar.
kann ich das irgendwie umgehen? oder fehlt irgendetwas?Hallo Khorne,
setze vor der for-Schleife
cout << setprecision( 10 ); // benötigt #include <iomanip>
zeigt 10 Stellen nach dem Komma. Mit dem Ausdruck
// #include <limits> cout << setprecision( numeric_limits< double >::digits10 );
stellst Du die Anzahl der Dezimalstellen ein, die auf Deinem System sicher dargestellt werden können.
Ändere dazu aber Deinen Standard-Header-Include auf
#include <iostream> // alles im namespace std
wenn Du z.B. innerhalb des main 'using namespace std' angibst, so kannst Du Dir den Prefix std:: sparen.
Gruß
Werner
-
hi,
Das Programm läuft jetzt gut.
Aber wenn ich das programm als 'exe' Datei starten will,
geht das Fenster nur ganz kurz auf und dann wieder zu.
Ich habe alle Programme, die ich geschrieben habe bis jetzt nur
über 'ausführen' gestartet und wurde deshalb noch nie mit dem
Problem konfrontiert.
-
FAQ... (Konsole, wenn ich mich recht erinnere)
-
im FAQ hab ich nichts gefunden.
Hab dann nach Konsole gesucht und hab in einem Beitrag einen Link auf ein
Konsolen FAQ gefunden, aber wenn man dem Link folgt, kommt eine Seite, auf der
"Diesen Beitrag gibt es nicht" oder so ähnlich steht.ansonsten hab ich nur etwas über getch() oder cin.get() gefunden
das funktioniert aber beides nicht.
(ich bin mir nicht mal sicher ob es zu meinem Problem gehört, da es nur am Rande erwähnt wurde. ausserdem bin ich mir nicht sicher, ob ich es richtig verwendet habe.Gehört z.B. in die Klammer was rein)
-
einfach den User noch eine Eingabe machen lassen...
z.B.
int i;
std::cin >> i;
-
im FAQ hab ich nichts gefunden.
C/C++ Forum :: FAQ - DOS und Win32-Konsole :: Automatisches Schließen verhindern
-
gleich der zweite Eintrag...
-
Aber wenn ich das programm als 'exe' Datei starten will,
geht das Fenster nur ganz kurz auf und dann wieder zu.IMHO ist die einzig wahre Lösung für dein Problem ist das Konsolenprogramm auch von der Konsole zu starten.
Kurt
-
ohh sch***** tut mir leid, ich hab nur im C++ FAQ geschaut
-
Du könntest das Problem mit getch(); lösen.
Dazu musst du <conio.h> includen.Beispiel:
#include <iostream> #include <conio.h> int main() { std::cout << "Hallo!" << std::endl; getch(); //beliebige Taste drücken um fortzufahren }