wdh. in while schleife
-
Hallo
Kann mir jemand sagen warum sich die erste Kopfgesteuerte while Schleife immer wiederholt.
#include<stdio.h>
#define L 100
main()
{
float pos[L],neg[L],x,nsum=0,psum=0;
int p=1,n=1,i;
pos[0]=0;neg[0]=0;
while(pos[p-1]<1000&&neg[n-1]>-1000)
{
printf("Geben Sie den Messwert ein:");
scanf("%f",&x);
if(x>0)
{
x=pos[p];
p=p+1;
}
else
{
x=neg[n];
n=n+1;
}
}
for(i=1;i=p-1;i=i+1)
{
psum=psum+pos[i];
}
for(i=1;i=n-1;i=i+1)
{
nsum=nsum+neg[i];
}
printf("\n\nDer Durchschnitt der Negativen Werte Betraegt: %f\n\n",nsum/(n-1));
getch();
printf("Der Durchschnitt der Positiven Werte Betraegt: %f\n\n",psum/(p-1));
getch();
printf("Der Durchschnitt aller Werte Betraegt: %f\n\n",(psum+nsum)/((p-1)+(n-1)));
getch();
}wenn ich z.B -1001 eingebe ist ja die while bedingung nicht mehr erfuellt und er muesste abbrechen?
glaub sth grad aufm schlauch.
Danke im voraus
-
"pos[]" und "neg[]" wird nix zugewiesen! while() prüft Speichermüll.
-
Danke fuer den Tipp
wuerd doch pos[p] oder neg[n] in der if Abfrage nachdem x eingelesen wurde zugewiesen oder? und obendrueber hab ich pos[0]=0 und neg[0]=0 zugewisen um in die Schleife rein zu kommen?
-
x wird zwar eingelesen, aber in der if-Abfrage wird x wieder was zugewiesen:
(...) scanf("%f",&x); if(x>0) { // x=pos[p]; // <- nicht so pos[p]=x; // <- sondern so p=p+1; } (...)
-
ah alles klar Danke...
Tappe immer wieder in die MAthe Falle
-
hhhmmm und jetzt haengst sich nach der while schleife auf.
-
Dann guck dir mal den zweiten Parameter der for-Schleife an:
(...) for(...;i=p-1;...) (...)
Da ist wieder eine Zuweisung an der "falschen" Stelle.
-
Wie +zuweisung+ schon immer fleißig korrigiert, stimmen deine Zuweisungen und Vergleiche eigentlich nie. Mach dich da nochmal ein bisschen schlau, denn das erspart dir viel Arbeit
-
Danke bin am dran Arbeiten