Bonjour,

j'essaye d'écrire un programme qui me calcul les valeurs pour cette formule :

(1/2)*g*t*t .

Voici ce qui a été fait (sous linux, compilateur gcc)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#define G 9.81
#define N 16
 
int main(void)
{
    int t; /* Temps en seconde */
        float m; /* Longueur en m */
 
    printf("\t  t  \t  (1/2)gt^2\n");
    printf("\t==========================\n");
    for (t=0; t<=N; t++)  {
       printf("\t%3d \t %18d\n", t , m);
    m = 0.5*G*t*t;
   }
    return 0;
}
Et voici le résultat :


t (1/2)gt^2
==========================
0 -2147483648
1 0
2 1610612736
3 1610612736
4 1610612736
5 1610612736
6 0
7 1610612736
8 1073741824
9 1610612736
10 1073741824
11 0
12 1073741824
13 1610612736
14 1610612736
15 1073741824
16 0
Alors pour le temps (t) cela s'affiche, par contre pour m la distance parcouru, je sais pas pourquoi cela m'affiche ces chiffre là.

Par contre quand je change cette ligne :

float m; /* Longueur en m */

en celle-ci

int m; /* Longueur en m */

cela m'affiche ceci :

t (1/2)gt^2
==========================
0 9129972
1 0
2 4
3 19
4 44
5 78
6 122
7 176
8 240
9 313
10 397
11 490
12 593
13 706
14 828
15 961
16 1103
pour la distance m je n'est pas les chiffres après la virgule, quelqu'un saurait d'où vient le problème ? (normalement les données sont sur 2 colonnes distincts mais l'affichage me le permet pas)

merci d'avance.