Problem mit For-Schleife
-
Hallo! Wer von Euch kann mir sagen, warum das folgende Programm stets den selben Wert in die Datei werte.dat schreib, obwohl sich i nach jedem Durchlauf ändert ?
Bitte helft mirint i; for (i=1;i<=t;i=i+1;) { fnorm1 = cos_d(winkel)*m*(ortsfaktor*(1)+((winkel/180)*((fha-fglei)/m)*(pow(i,2)))*(3*(pow(10,-6)))); ofstream out("werte.dat", ios::app); out<<fnorm1<<endl; };
-
hypersayyajin16_5 schrieb:
int i; for (i=1;i<=t;i=i+1;) { fnorm1 = cos_d(winkel)*m*(ortsfaktor*(1)+((winkel/180)*((fha-fglei)/m)*(pow(i,2)))*(3*(pow(10,-6)))); ofstream out("werte.dat", ios::app); out<<fnorm1<<endl; };
1. Es ist unmöglich zu komeilieren,denn in der For-Kopf stehen vier Befehle (getrennt duch drei Semiloions) Besser:
[...] for (i=1;i<=t;i=i+1) [...]
2. Es gibt einige Programmiertechniken, die dir das programmieren vereinfachen (Inkrementieren, Variablen-"festlegen" im For-Kopf):
for (int i=1; i<=t ; i++) { [...] }
3. Es ist viel schneller wenn man den "ofstream" außerhab der For-schleife zu nutzen und ihn im Inneren zu verwenden.
ofstream out("werte.dat", ios::app); for (int i=1; i<=t ; i++) { fnorm1 = cos_d(winkel)*m*(ortsfaktor*(1)+((winkel/180)*((fha-fglei)/m)*(pow(i,2)))*(3*(pow(10,-6)))); [...] }
4. Fehlt nicht auch
out.close();
??? (Wahrscheinlich Hauptfehler; Vermutlich wird die Datei immer überschrieben; = Ist das "zufälliger Weise" immer der letzte Wert) Wenn nicht muss nach "ofstream out("werte.dat", ios::app" einige Sachen folge, die dem PC "sagen", dass er nicht überschreiben sondern anhängen soll.
5. Es wird schneller wenn du alles vorher ausrechnest was sich nicht ändert (Außerdem zu viele klammern):
ofstream out("werte.dat", ios::app); float temp1 = cos_d(winkel)*m; float temp2 = ortsfaktor*(1); float temp3 = winkel/180*(fha-fglei)/m*3*pow(10,-6); for (int i=1; i<=t ; i++) { fnorm1 = temp1*(temp2 + temp3*pow(i,2)); out<<fnorm1<<endl; }
Mit freundlichen Grüßen
Rhombicosidodecahedron