Pobleme en language c

Bonjour,
je suis debutante en langauge c j'ai compiler le programme suivant qui calcule la somme des elements d'un tableau mé je sais pas pour quoi ça m'affiche pas la somme !!! :(
y a t-il kelkin ki peut m'aider ????
merci d'avance
#include <stdio.h>
main()
{

int T[50];
int n, i ;
long som;
printf("Dimension du tableau (max.50) : ");
scanf("%d", &n );
/*remlissage du tableau*/
for (i=0; i<n; i++)
{
printf("Elément %d : ", i);
scanf("%d", &T[i]);
}
/* Affichage du tableau */
printf("Tableau donné :\n");
for (i=0; i<n; i++)
printf("%d ", T[i]);
printf("\n");
/* Calcul de la somme */
for ( i=0; i<n; i++)
som += T[i];
/* affichage du résultat */
printf("Somme de éléments : %ld\n", som);
return 0;}
Configuration: Windows XP / Firefox 3.5.8

23 réponses

Résumé de la discussion

Le problème porte sur un programme en C censé calculer et afficher la somme des éléments d'un tableau, mais la somme n'apparaît pas ou reste incorrecte lors de l'exécution. La cause principale est l'absence d'initialisation de la variable som, ce qui produit une somme non définie et entraîne un affichage vide ou des résultats incohérents. Des réponses proposent d'initialiser som à 0 avant la boucle de calcul et de corriger l'utilisation de scanf pour les entrées, afin que chaque élément soit bien lu et additionné. En cas d'exécution sous Windows, l'ajout d'une pause à la fin évite la fermeture rapide de la console et permet de vérifier le résultat avant de quitter.

Bobot (l’IA à votre service)
  1. Salut,

    déjà pas d'accent en langage C si tu es sous windaub x)

    Peux tu détailler + ton problème ?

    Car chez moi il affiche le résultat...
    0
    1. Euhm...en faite c'est bof bof

      Qu'as tu prévu pour que ton programme affiche le résultat de la somme de tes éléments ?
      Pourquoi demandes tu la dimension max du tableau ? (ça me semble inutile)
      Pourquoi fais tu cela en console ????
      0
      1. Ah ok, j'ai pigé pour la dimension...(c'est indispensable xD)

        Mais peux tu détailler le reste stp
        0
        1. bonjour,
          le prob c k tu n'as po initialisé la somme s, au lieu de faire long som,essaye de faire long som=0;
          0
          1. Salut =)

            *ça ne changera rien, mais initialise la à 0 (prends cette habitude)

            *Mais le pb c'est que tu n'as rien prévu pour que ton programme "s'arrête", c'est-à dire qu'à chaque fois que tu vas rentrer 1 élément, un nouveau te seras demandé. Or il faut que dises à ton programme quelque chose du genre :

            "quand l'utilisateur a rentré son nb d'elements voulus alors affiche le resultat de la somme"
            0
            1. bon g ecrit long som = 0 mé le probleme reste
              mon probleme ke lorske g execute le programme il me demande la taille du tableau je le lui entre puis il me demande les elements un par un aussi g les lui donne aussi mé une fois g taper le dernier element r1 ne s'affiche et le console se ferme tt de suite
              0
              1. salut
                nn,chi po d'acc ,elle a précisé le nbr des élém du tab dés le début ,c n,donc la saisie des ele s'arretera une fois le nbr n est atteint
                0
                1. slt bark c c ke g veux faire mé comment???????
                  0
                  1. slt rimi mé la saisi s'arrete et le programme se ferme tt de suite sans afficher la somme
                    0
                    1. salut,exécute ce code ,essaye plzz mekaelle
                      #include <stdio.h>
                      #include<stdlib.h>
                      main()
                      {

                      int T[50];
                      int n, i ;
                      long som=0;
                      printf("Dimension du tableau (max.50) : ");
                      scanf("%d", &n );
                      /*remlissage du tableau*/
                      for (i=0; i<n; i++)
                      {
                      printf("Elément %d : ", i);
                      scanf("%d", &T[i]);
                      }
                      /* Affichage du tableau */
                      printf("Tableau donné :\n");
                      for (i=0; i<n; i++)
                      printf("%d ", T[i]);
                      printf("\n");
                      /* Calcul de la somme */
                      for ( i=0; i<n; i++)
                      som += T[i];
                      /* affichage du résultat */
                      printf("Somme de éléments : %ld\n", som);

                      system ("pause");}
                      0
                      1. moi j'utilise le dev c++,et ça m'a donné le résultat,y a po d'erreur ds le programme
                        0
                        1. Hé rimi-naroto ! ce que j'veux dire c'est que tu peux aller au-delà de 50 donc 50 n'est pas la valeur max !

                          Et cette ligne directive: #include<stdlib.h> ça n'y changera rien tu peux le mettre mais c'est pas ça qui fera que...

                          * Mekaelle ?

                          Tu compile avec quoi ? Sous quoi (windows ou linux) ?

                          Chez moi ton prog fonctionne mais on peut dire qu'il est faux car on peut aller au delà de 50 elements
                          0
                          1. merci bokou rimi ça marche chez moi aussi :)) g l'essayé sur dev c++ , mé je comprend pas pk ta utilisé la include <stdlib.h>????
                            0
                            1. @ brak
                              je suis sous windows et j'utilise dev c++
                              0
                              1. le <stdlib.h> c seulement pour garder la console ,c une chose qui dépend de version de compilateur,et si tu veux lors de la saisie d'une dim de tableau k t'as choisi, ici 50 tu dois ajouter une boucle while qui te redemande à chak fois d'entrer une dim inf à 50,voilà un exp:
                                #include <stdio.h>
                                #include<stdlib.h>
                                main()
                                {

                                int T[50];
                                int n, i ;
                                long som=0;
                                printf("Dimension du tableau (max.50) : ");
                                scanf("%d", &n );
                                while(n>50){
                                printf("essaye de nouveau ,le nbr entré est sup à 50");
                                scanf("%d", &n );}
                                /*remlissage du tableau*/
                                for (i=0; i<n; i++)
                                {
                                printf("Elément %d : ", i);
                                scanf("%d", &T[i]);
                                }
                                /* Affichage du tableau */
                                printf("Tableau donné :\n");
                                for (i=0; i<n; i++)
                                printf("%d ", T[i]);
                                printf("\n");
                                /* Calcul de la somme */
                                for ( i=0; i<n; i++)
                                som += T[i];
                                /* affichage du résultat */
                                printf("Somme de éléments : %ld\n", som);

                                system ("pause");}
                                0
                                1. est ce k c ça c k tu voulais dire brak,j'espère je t'ai compris::))
                                  0
                                  1. si j'entre dans la dimension du tableau un element ki n'est po entier par exemple lettre j'aurais un boucle infini keske j'ajoute pour resoudre ce probleme
                                    0
                                    1. SALUT mekaelle
                                      dsl pour le retard,voici le prog ,essaye le,et si tas une kestion n'hesite po
                                      #include <stdio.h>
                                      #include<stdlib.h>
                                      main()
                                      {

                                      int T[50];
                                      int n, i ;
                                      long som=0;
                                      printf("Dimension du tableau (max.50) : ");
                                      if (scanf("%c", &n )) {printf("il faut entrer un entier");}

                                      scanf("%d", &n );
                                      while(n>50){
                                      printf("essaye de nouveau ,le nbr entré est sup à 50");
                                      scanf("%d", &n );}
                                      /*remlissage du tableau*/
                                      for (i=0; i<n; i++)
                                      {
                                      printf("Elément %d : ", i);
                                      scanf("%d", &T[i]);
                                      }
                                      /* Affichage du tableau */
                                      printf("Tableau donné :\n");
                                      for (i=0; i<n; i++)
                                      printf("%d ", T[i]);
                                      printf("\n");
                                      /* Calcul de la somme */
                                      for ( i=0; i<n; i++)
                                      som += T[i];
                                      /* affichage du résultat */
                                      printf("Somme de éléments : %ld\n", som);

                                      system ("pause");}
                                      0
                                      1. eh maekelle,ce programme signale l'erreur lors de la saisie d'1 seul caractère au lieu d'un entier,pour qu'il fait du mm pour un string tu n'as qu'à remplacer le %c par le %s.
                                        0
                                        1. merci rimi ça marche très b1 chwi hyper heureuse :)))))
                                          0
                                          1. po d koi,heureuse aussi pour toi :)
                                            0
                                        • 1
                                        • 2