kleines problem bei einer for schleife
-
hallo, hab folgendes programm geschrieben:
#include <stdio.h> #include <math.h> double stabneu (int,double,double); int main (void) { double stab=0,ausgangswert=0,winkel=0,summe=0,pi=3.141592654; int i=1; printf("Stablaenge: "); scanf("%lf", &stab); printf("Winkel: "); scanf("%lf", &winkel); winkel = winkel * pi / 180; ausgangswert = stab; printf("Nummer neue Strebe Gesamtlaenge \n"); for (i=1;i<21;i++) { stab = stabneu (i,stab,winkel); summe = summe+stab; printf("%5d %7.4lf %7.4lf\n", i,stab,summe); if (i==20) printf("\n 20 Streben erreicht\n"); if (stab < ausgangswert/100) i = 21; } } double stabneu (int x,double y,double z) { if (x==1) y=y*sin(z); if (x>1) y=y*cos(z); return y; }
das ganze gibt die länge und summe von stäben an mit hilfe der funktion stabneu.
was ich aber nich hinbekomme is, dass wenn ich zb als stablänge 100 eingebe und als winkel 75, dann gibt mir das programm immer noch als letzten wert einen wert aus der kleiner als der ausgangswert/100 ist.
ich würde gern wissen, wie ich das ganze umschreiben muss, damit diese letzte zeile nicht mehr ausgegeben wird.danke schon mal im voraus
-
wenn du meinst dass der letzte wert nie kleiner als ausgangswert/100 sein darf kannst du das machen:
if(wert > ausgangswert/100) printf("Ausgabe");
-
ne ich möchte, dass wenn der wert < ausgangswert/100 ist, das programm aus der for-schleife springt ohne, dass es vorher noch den wert ausgibt, welcher < ausgangswert/100 ist.
-
solltest vlt eher ne while schleife verwenden...
aber verwende an der stelle an der du aus der schleife willstbreak;
bzw... nimm eine bool - variable als schleifenbedingung und setz sie auf false falls der wert < ausgangswert/100 wird und den rest nach der überprüfung einfach in ein if (innerhalb der schleife)
so wird beim letzten durchlauf (vor dem abbruch) der rest der schleife nicht mehr ausgeführt
-
sorry versteh nich ganz wie ich das mit der bool variable umsetzen soll...
-
bool done=true; int i=1; do{ stab = stabneu (i,stab,winkel); summe = summe+stab; if( stab > ausgangswert/100 ) printf("%5d %7.4lf %7.4lf\n", i,stab,summe); else done=false; }while(done && i++<21);
EDIT: Syntaxfehler...man bin ich müde
-
ah super, danke
hatten diese bool variablen zwar noch nich, aber ich hab einfach ne variable 1 oder 0 gesetzt. funktioniert genauso
-
achso...ja...
ne bool variable kann nur true und false also 1 oder 0 annehmen!
aber mit ner int variable die man auf 0 oder 1 setzt gehts natürlich genauso...
ist halt ein bissl viel nen int zu verwenden