Programme C et Tableau -- HELPP svp!

Résolu
ram dam -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Voila, jai un exam lundi prochain et j essai de resoudre ce petit probleme mais je bloque!
-le truc, c'est faire un tableau avec en 1er ligne "les année" {1951; 1952; 1953; ...jusqu'a; 1960}
on demande alors a l utilisateur de rentrer des valeurs de temperature pour chaque année pour enfin afficher la moyenne de temperature sur cette periode (de 1951 a 1960).

et ici, ce que jai commecé, mais cela ne marche pas!!


#include <stdio.h>

int main()
{
    int i;    //pour les annee
    float s;     //la somme de temperature
    float T[10];    //le tableau
    
    for (i = 1951; i < 1961; i++)   
    {   
        printf ("temp pour %d \n", i);    // on demande ici a lutilsateur de rentrer la temperature
        scanf("%f", &T[i]);        //la valeur est mise dans le tableau
    }   
        
        s=s+T[i];      //la somme de toutes les temperatures pour le calcul de la moyenne
    
    
    
    printf ("moyene \n", s/10);
        
    

    return 0;
}






Merci a tous!
jai vraiment besoin de vous..
A voir également:

8 réponses

&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
mets la somme s=s+T[i] dans la boucle for !!!
et il faut initialiser s=0; au début
0
ram dam
 
ok, jai fais les modif mais la jai un bug
je rentre bien la temperature pour la 1er année mais ensuite jai "

"temp.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru."

normal cette histoire??? et cela vien de chez moi??

#include <stdio.h>

int main()
{
    int i;    //pour les annees
    float s=0;     //la somme de temperature
    float T[10];    //le tableau
    
    for (i = 1951; i < 1961; i++)   
    {   
        printf ("temp pour %d \n", i);  // on demande ici a lutilsateur de rentrer la temperature
        scanf("%f", &T[i]);        //la valeur est mise dans le tableau
    
        s=s+T[i];      //la somme de toute les temperatures pour le calcul de la moyenne
    }   
    
    printf ("moyene \n", s/10);
        
    return 0;
}
0
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
le code devrait ressembler à ça :

#include <stdio.h>

void main()
{
int i; //pour les annee
float s=0, moy=0; //la somme de temperature
float T[10]; //le tableau

for (i = 0; i < 10; i++)
{
printf ("temp pour %d \n", i); // on demande ici a lutilsateur de rentrer la temperature
scanf("%f", &T[i]); //la valeur est mise dans le tableau
s=s+T[i]; //la somme de toutes les temperatures pour le calcul de la moyenne

}

moy=s/10;
printf ("moyene %f \n", moy);

}
0
samar83 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
 
salut,
scanf("%f", &T[i]); //la valeur est mise dans le tableau !!! mais t'as mis la valeur dans T[1956] ki n'est pas défini

je vous conseil d'utiliser unetableau à 2 dimension 2x10 dans la première ligne tu stocke les années ds la 2ème les temperature !
si c n'est pas essentiel de mémoriser les température essaye c programme:

#include <stdio.h>

int main()
{
int i;
float s=0,n;
int T[10];


for (i = 1951; i < =1960; i++)
{
printf ("temp pour %d \n", i); // on demande ici a lutilsateur de rentrer la temperature
scanf("%f",n)
s=s+n; //la somme de toutes les temperatures pour le calcul de la moyenne
}



printf ("moyene =", s/10);



return 0;
}
j'ai pris votre programme et je fais qque modifications!
0
samar83 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
 
votre tableau est définie jusqu'au 10 et tu demande au programme de stocker une valeur dans T[1956] c normal ke tu vas rencontrer un problème!
0
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
oui c'est vrai il a raison, tu as T[10] de 0 à 9
sinon utilise les enum et pas les tableaux pour faire de 1951 à 1960
0
ram dam > &lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention  
 
non, il faut absolument utiliser un tableau.. l exam portera sur les tableaux..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
fais copier/coller mon code pour voir !
parce que j'ai utilisé une autre variable "moy" et dans printf j'ai mit "%f", j'ai un peu oublié le c mais normalement ça devrait marcher
tiens nous au courant
à+
0
ram dam
 
OUIiiiiiiiii, c'est vrai j'avais oublié le %f du printf
mais toujour ce méme bug

et si on crée au debut un tableau
float T[1961] ???


donc jen suis ici maintenant

#include <stdio.h> 

int main() 
{ 

  int i;                                     //pour les annee 
  float s=0, moy=0;                 //la somme de temperature 
  float T[10];                         //le tableau 

  for (i = 1951; i < 1961; i++) 
  { 
    printf ("temp pour %d \n", i);        // on demande ici a lutilsateur de rentrer la temperature 
    scanf("%f", &T[i]);                      //la valeur est mise dans le tableau 
    s=s+T[i];                                  //la somme de toutes les temperatures pour le calcul de la moyenne 

    } 

    moy=s/10; 
    printf ("moyene %f \n", moy); 

} 
0
ram dam > ram dam
 
Voila ca marche!!!
c'etait bien un probleme de tableau trop petit!
et jai donc ici un float T[1961];


#include <stdio.h> 

int main() 
{ 

  int i; 
  float s=0, moy=0; 
  float T[1961];  

  for (i = 1951; i < 1961; i++) 
  { 
    printf ("temp pour %d \n", i); 
    scanf("%f", &T[i]); 
    s=s+T[i];         

    } 

    moy=s/10; 
    printf ("moyene %f \n", moy); 

} 

0
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
il reste plus qu'a rectifier ta boucle :
for (i=0; i<10; i++)

ça n'a pas de sens de créer un tableau de 1962 cases pour n'utiliser que 10 !!!!!
gaspillage d'espace mémoire inutile, et à l'exam je ne sais pas ce que ça donnera comme remarque ou note !!!!
0
ram dam
 
et avec le nouveau algo que jai mis??
plus besoin de toucher a la boucle, non?
0
ram dam
 
lol
oui, je crois aussi que les prof aiment pas ca.. lol


donc je change ma boucle..
0
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75
 
ça marche mais ça n'a aucun sens
tu alloues trop d'espace inutilement donc c'est faux, à l'exam ça jouera contre toi
=> donc , rectifie ta boucle stp !
0
ram dam
 
yeppp voila

#include <stdio.h>

int main()
{

int i;
float s=0, moy=0;
float T[10];

for (i=1; i<11; i++)
{
printf ("temp pour l'année %d\n", i);
scanf("%f", &T[i]);
s=s+T[i];

}

moy=s/10;
printf ("moyene %f \n", moy);

}

et tourne!! merci merci!!!
0
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75 > ram dam
 
très bien
et bon courage pour tes exam ;)
0
ram dam > &lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention  
 
mais dit moi yassou, pour la boucle;

que ce soit avec for (i=1; i<11; i++) ou for (i=0; i<10; i++)

ca revient bien au méme?? no?
0
&lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   75 > ram dam
 
je me souviens plus très bien, mais je crois que le c permet de commencer les tableaux à partir de 0 ou de 1
alors qu'en c++, on ne commence qu'avec l'indice 0
donc normalement c'est la même chose, mais il faut vérifier au cas où je me trompe
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > &lt;yassou&gt; Messages postés 589 Date d'inscription   Statut Membre Dernière intervention  
 
Non, le C comme le C++ commence leur tableau à 0.
Donc, il faut utiliser : for(int i=0;i<10;i++)
Cdlt
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Oui, en effet un si grand tableau pour n'utiliser que très peu de case représente pas beaucoup d'intérêt.
Tu peux jouer avec l'addition pour faire du décalage d'indice. Par exemple :
#include <stdio.h> 

int main(void) { 

  int i; 
  float s=0, moy=0; 
  float T[10];  

  for (i = 1951; i < 1961; i++) 
  { 
    printf ("temp pour %d \n", i); 
    scanf("%f", &T[i-1951]); 
    s=s+T[i-1951];         

    } 

    moy=s/10; 
    printf ("moyene %f \n", moy); 
    return 0;

}
 

Et n'oublie pas le return final ;)
Cdlt
0
ram dam
 
ahhh!
on peut aussi faire T[i-1951]);

ok ok c'est noté! ;)
0