Programme C et Tableau -- HELPP svp!

Résolu
ram dam -  
fiddy Messages postés 441 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..
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. &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
    1. 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
  2. &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
  3. samar83 Messages postés 70 Date d'inscription   Statut Membre 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
  4. samar83 Messages postés 70 Date d'inscription   Statut Membre 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
    1. &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
      1. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. &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
    1. 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
      1. 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
  7. &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
    1. ram dam
       
      et avec le nouveau algo que jai mis??
      plus besoin de toucher a la boucle, non?
      0
    2. ram dam
       
      lol
      oui, je crois aussi que les prof aiment pas ca.. lol


      donc je change ma boucle..
      0
  8. &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
    1. 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
      1. &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
      2. 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
      3. &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
      4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > &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
  9. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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. ram dam
       
      ahhh!
      on peut aussi faire T[i-1951]);

      ok ok c'est noté! ;)
      0