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;}
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.
-
Wé c vrai ; ) g lé renversé et ça marche bien merci
-
meciiii fiddy mé le probleme dont tu parle ne m a pas rencontrer avec le programme de somme plutt avec ce programme si dessous la fenetre se ferme dés ke j'entre le dernier element du tableau malgrai ke g pas oublié de mettre systeme("pause")
#include <stdio.h>
#include <stdlib.h>
main()
{
/* Déclarations */
int T[50]; /* tableau donné */
int N; /* dimension */
int I,J; /* indices courants */
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
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");
/* Effacer les zéros et comprimer : */
/* Copier tous les éléments de I vers J et */
/* augmenter J pour les éléments non nuls. */
for (I=0, J=0 ; I<N ; I++)
{
T[J] = T[I];
if (T[I]) J++;
}
/* Nouvelle dimension du tableau ! */
N = J;
/* Edition des résultats */
printf("Tableau résultat :\n");
for (I=0; I<N; I++)
printf("%d ", T[I]);
printf("\n");
return 0;
system("pause");
} -
ContributeurBonjour,
Ton programme est presque parfait.
Je t'apporte les corrections :#include <stdio.h> #include <stdlib.h> /*modification pour la fonction system()*/ int main(void) { /*modification*/ 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 */ som=0; /*modification*/ for ( i=0; i<n; i++) som += T[i]; /* affichage du résultat */ printf("Somme de éléments : %ld\n", som); system("pause");/*modification*/ return 0; }
En fait tu avais oublié d'initialiser la variable som à 0. De plus comme tu es sur windows et que tu lances le programme en double cliquant (j'imagine) ton programme se referme très vite et tu ne vois pas l'affichage. J'ai donc mis une pause en fin de programme. Par contre, ce n'est plus entièrement portable pour cette dernière ligne (le mieux serait de mettre un double getchar() (le premier pour enlever le '\n' du buffer clavier).
Cdlt, -
merci rimi ça marche très b1 chwi hyper heureuse :)))))
-
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.
-
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");} -
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
-
est ce k c ça c k tu voulais dire brak,j'espère je t'ai compris::))
-
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");} -
@ brak
je suis sous windows et j'utilise dev c++ -
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>????
-
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 -
moi j'utilise le dev c++,et ça m'a donné le résultat,y a po d'erreur ds le programme
-
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");} -
slt rimi mé la saisi s'arrete et le programme se ferme tt de suite sans afficher la somme
-
slt bark c c ke g veux faire mé comment???????
-
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 -
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 -
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" -
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;
- 1
- 2
Suivant