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


Anmelden zum Antworten