Somme d'elements d'un tableau en C

Résolu/Fermé
flight7218 Messages postés 13 Statut Membre -  
 mexisu -
bonjour,

debutant en C , je me suis crée un petit programme à titre d'exercice , mais je suis bloqué quand à calculer la somme des elements de mon tableau ,Pourriez vous m'indiquer une methode pour y arriver , encor merci à tous! voici donc mon programme ;

int tab[10];
int i=0;
for(i=0;i<=9;i++)
{
printf(" donnez la valeur N° %ld",i);
scanf("%ld",tab[i]);
}
ensuite je voudrai faire la somme de mes 10 elements et là je bloque .
Merci
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. rainbow07
     
    Ce topic date pas mal maintenant ! :p
    Mais bon, vu que je suis tombé dessus, autant y participer et donner un plus.

    Pour ceux qui ont vu les pointeurs ou pour ceux qui veulent une correction de l'exercice proposé sur le SDZ, l'exercice demandé en C peut s'écrire ainsi :

    #include <stdio.h>
    #include <stdlib.h>

    void sommeTableau (int tableau[], int *pointeursomme);

    int main()
    {
    int somme=0;
    int tableau[4]={2,5,7,8};
    sommeTableau(tableau,&somme);
    printf("%d", somme);

    return 0;
    }

    void sommeTableau (int tableau[], int *pointeursomme)
    {
    int i=0;

    for(i=0;i<4;i++)
    {
    *pointeursomme = *pointeursomme + tableau[i];

    }
    }

    Voila, j'espère que ça aidera certains ! :)
    21
    1. mexisu
       
      merci pour ce corrigé concis
      0
  2. nauno Messages postés 342 Statut Membre 60
     
    tu y étais presque, allez un petit effort!!!
    int tab[10];
    int i=0;
    int tot=0;
    for(i=0;i<=9;i++)
    {
    printf(" donnez la valeur N° %ld",i);
    scanf("%ld",tab[i]);
    tot=tot+tab[i];
    } 

    printf("Somme des 10 elements du tableau: %d",tot);
    12
    1. flight7218 Messages postés 13 Statut Membre
       
      merci à toi "nauno" ,( flight7218)
      0
    2. j'espère que ça t'aidera :)
       
      #include <stdio.h>
      #include <stdlib.h>
      #include <math.h>

      int main(int argc, char *argv[])
      {
      int tableau[4]={2,3,9,8}; //Par exemple

      int somme (int tableau[], int taille)
      {
      int y=0 ,i=0;

      for (i=0;i<taille;i++)
      {
      y = y+tableau[i] ;
      }


      return y;
      }

      printf("%d\n" ,somme (tableau, 4));

      return 0;
      }
      0
  3. shadow
     
    sur ton printf dans ta fonction, tu donne %ld soit un nombre décimal, alors que tu as déclaré plus haut que c'était un int. donc il faut que tu mette %d et non %lf ou alors que tu change le type de ta variable quand tu la déclare.

    ensuite lors de ton scanf tu met %d ce qui est exact car tu veu bien un entier. mais ton paramètre est incorect.

    en effet tu lui indique ,tableau[i]. il va donc comprendre :" écris la valeur que l'on a entré sur la variable tableau[i]".

    alors que tu veux écrire dans la case i de ton tableau.
    il faut donc écrire : scanf("%d",&tableau[i]);

    voici ton algo corrigé :

    #include <stdio.h>
    #include <stdlib.h>

    int sommetableau(int *tableau, int tailletableau);
    int main(int argc,char *argv[])
    {
    int tabl[5];

    sommetableau(tabl,5);
    return 0;
    system("PAUSE");
    }
    int sommetableau(int *tableau, int tailletableau)
    {
    int i,somme=0;

    for(i=0;i<tailletableau;i++)
    {
    printf("donner un nombre entier numero %d au hazard:\n",i);
    scanf("%d",&tableau[i]);
    somme=somme+tableau[i];
    }
    printf("voici la somme obtenu:%d",somme);
    return somme;
    }
    4
  4. chrt
     
    Est ce que vous pouvez me dire pourquoi ce code ne marche pas?
    Merci de me répondre!

    #include <stdio.h>
    #include <stdlib.h>

    int sommetableau(int *tableau, int tailletableau);
    int main(int argc,char *argv[])
    {
    int tabl[5];

    sommetableau(tabl,5);
    return 0;
    system("PAUSE");
    }
    int sommetableau(int *tableau, int tailletableau)
    {
    int i,somme=0;

    for(i=0;i<tailletableau;i++)
    {
    printf("donner un nombre entier numero %ld au hazard:\n",i);
    scanf("%d",tableau[i]);
    somme=somme+tableau[i];
    }
    printf("voici la somme obtenu:%d",somme);
    return somme;
    }
    0
    1. goumouch2
       
      slt chrt est ce que tu peux m'expliquer un tout pti peu ton instruction system ("PAUSE"); stp?
      0
    2. jeandchanel Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
       
      salut, voici tes erreurs sommetableau(tabl,5); et int tabl[5];

      il faut plutôt écrire : sommetableau(tableau, 5); et int tableau[5];

      ton prototype aussi n'est pas bon.
      Écris plutôt comme ceci : int sommeTableau(int tableau[], int tailleTableau);
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > jeandchanel Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
         
        J'espère que depuis presque 6 ans, il est passé à autre chose...

        Écris plutôt comme ceci : int sommeTableau(int tableau[], int tailleTableau);
        Je ne vois pas en quoi c'est faux... Si c'est pour signaler qu'il faut mettre int tableau[] au lieu de int *tableau, c'est exactement pareil.
        0
    3. jeandchanel Messages postés 140 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour,
      cher fiddy, la difference c'est au niveau du 't' : int sommetableau[]; au lieu de int sommeTableau[]; pour le reste vous avez raison.
      0