Programme C et Tableau -- HELPP svp!

Résolu
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..
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. mets la somme s=s+T[i] dans la boucle for !!!
    et il faut initialiser s=0; au début
    0
    1. 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
  2. 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
    1. 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
      1. 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
        1. 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
        2. @&lt;yassou&gt;non, il faut absolument utiliser un tableau.. l exam portera sur les tableaux..
          0
      2. 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
        1. 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
        2. @ram damVoila 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
      3. 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
        1. et avec le nouveau algo que jai mis??
          plus besoin de toucher a la boucle, non?
          0
        2. lol
          oui, je crois aussi que les prof aiment pas ca.. lol

          donc je change ma boucle..
          0
      4. ç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
        1. 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
        2. @ram damtrès bien
          et bon courage pour tes exam ;)
          0
        3. @&lt;yassou&gt;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
        4. @ram damje 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
        5. Contributeur
          @&lt;yassou&gt;Non, le C comme le C++ commence leur tableau à 0.
          Donc, il faut utiliser : for(int i=0;i<10;i++)
          Cdlt
          0
      5. Contributeur
        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
        1. ahhh!
          on peut aussi faire T[i-1951]);

          ok ok c'est noté! ;)
          0