Brauche hilfe zu while/bzw zu error code
-
aufgabe lautet :
s= 1/2 *gt²
Schreiben Sie ein ‘C’-Programm, dass eine Tabelle erzeugt, welche die Wegstrecke
s für Zeiten t zwischen 1 und 2 Sekunden im Abstand von 0.1 Sekunden ausgibt.mein quellcode :
#include <stdio.h> #include <math.h> main() { int s, t, upper, low; //s=Wegstrecke t=Zeit double g, step; g = 9.81; upper = 2; //höchste low = 1; //niedrigste low = t; step = 0.1; //schrittweise while(low <= upper) { s = (1/2) * g * t²; printf("%d ",s); low = low + step; } }
meine erorrs
ueblatt04.3.c: In function ‘main’: ueblatt04.3.c:16: error: stray ‘\302’ in program ueblatt04.3.c:16: error: stray ‘\262’ in program
ich weiß nicht was an "s = (1/2) * g * t²;" falsch sein sollte...
-
ppl schrieb:
aufgabe lautet :
s= 1/2 *gt²
Schreiben Sie ein ‘C’-Programm, dass eine Tabelle erzeugt, welche die Wegstrecke
s für Zeiten t zwischen 1 und 2 Sekunden im Abstand von 0.1 Sekunden ausgibt.mein quellcode :
#include <stdio.h> #include <math.h> main() { int s, t, upper, low; //s=Wegstrecke t=Zeit double g, step; g = 9.81; upper = 2; //höchste low = 1; //niedrigste low = t; step = 0.1; //schrittweise while(low <= upper) { s = (1/2) * g * t²; printf("%d ",s); low = low + step; } }
meine erorrs
ueblatt04.3.c: In function ‘main’: ueblatt04.3.c:16: error: stray ‘\302’ in program ueblatt04.3.c:16: error: stray ‘\262’ in program
ich weiß nicht was an "s = (1/2) * g * t²;" falsch sein sollte...
Man kann Potenzen leider nicht mit ² oder ³, etc. ausdrücken. Schreib also einfach:
s = (1/2) * g * (t * t);
Solltest du mal zu a hoch b kommen, so kannst du auch die Standardfunktion pow nutzen. http://www.elook.org/programming/c/pow.html
In dem Fall reicht aber t * t, denke ich.
-
ja stimmt,.. habs mir schon fast gedacht ,.. habs auch vorher schon mit "^" probiert,.. aber das erkennt der auch nicht,.. danke bin von selbst nicht drauf gekommen.
nur irgendwie bekomme ich noch garkeine ausgabe,.. da stimmt wohl was mit der while schleife nicht.
-
evtl. versuchst mal statt ² pow()
#include <stdio.h> #include <math.h> main(){ double g_div_two = 9.81 * 0.5 ,step = 0.1 ,s ,t = 1.0 ,upper = 2.0; while(t <= upper){ s = g_div_two * powi(t,2); printf("%f\t%f\n",t,s); t+= step; } }
-
Ja, in deinem Code scheint einiges schief zu gehen. Unter anderem wird ja auch gar kein Startwert für t angegeben. Damit ist t nicht initialisiert und der Wert damit undefiniert. Auch ist für s der Typ int eventuell nicht der Richtige? Es werden ja sicher Dezimalzahlen als Ergebnis rauskommen, aber int unterstützt keine Nachkommastellen. Es wird auch nicht gerundert oder ähnliches. Alles was nach dem Komma steht, fällt also eiskalt einfach weg. Aus 0.1 wird 0 aus 0.8 wird 0 aus 1.9 wird 1, usw.
-
achso im einfachsten fall
int main(void){ statt main(){
und dann um die functionen in der math.h zu verwenden mußt mit -lm compilieren oder (t*t) statt powi(t,2) schreiben