Faire la somme des elements d'un tableau en C

Résolu/Fermé
acrony Messages postés 14 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 24 nov. 2010 à 15:38
acrony Messages postés 14 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 25 nov. 2010 à 14:16
Bonjour,


Je travaille sur un petit programme qui doit être capable 'enregistrer une liste d'entiers et d'en sortir la somme et la moyenne. Comme le nombre d'entiers ne doit pas toujours être le même et l'utilisateur doit pouvoir entrer autant d'entiers qu'il veut...j'ai choisi de travailler avec l'allocation dynamique d'espace pour la création du tableau qui recevrai mes entiers. Jusque la ca va j'arrive a enregistrer la liste d'entiers et a les afficher...

La ou ca coince c'est que j'arrive pas a calculer ni la somme ni la moyenne...

Merci de votre coup de main

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

int main()
{
int numbofinput = 0, i = 0, sum = 0, product = 0 ;
int* sizeofarray = NULL; // This will be the array

printf("what is the number of your input ? ");
scanf("%d", &numbofinput);

if ( numbofinput > 0) // The user must enter a minimum of one input
{
sizeofarray = malloc( numbofinput * sizeof(int));
if ( sizeofarray == NULL)
{
exit(0);
}

for (i = 0 ; i < numbofinput ; i++)
{
printf("Enter the number n: %d : \n", i + 1);
scanf("%d", &sizeofarray[i]);
}

printf("\n\n This is the list of your inputs :\n");
for (i = 0 ; i < numbofinput ; i++)
{
printf("%d\n", sizeofarray[i]);

}

/* for ( i = 0; i < sizeofarray ; i++)
{
sum = sum + sizeofarray[i];
printf("\n This is the sum of your inputs :\n");
printf("Sum=%d\n", sum);

}*/

free(sizeofarray);
}
return 0;
}
A voir également:

3 réponses

Ca fait longtemps que je n'ai pas fait de c mais je dirais que le calcul ne se fait pas car il s'agit d'un tableau de pointeurs.

Essaye : sum = sum + &sizeofarray[i];
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 nov. 2010 à 11:57
si c'est pour dire de grosses conneries, mieux vaut s'abstenir.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
24 nov. 2010 à 16:02
La somme n'est pas bonne ?
Je ne vois pas où est le problème, à part qu'en général on sort les printf de la boucle de sommation.
Si, j'ai le bug, tu fait la boucle jusqu'à sizeofarray au lieu de numbofinput
0
acrony Messages postés 14 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
25 nov. 2010 à 10:51
Salut

Ça passe pas, la je suis bloqué. Je ne vois pas ou se situe le problème. après avoir lister les nombres entrés le programme ne lit même pas la suite (calcul de la somme) l'exécution s'arrête net .
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
Modifié par Char Snipeur le 25/11/2010 à 11:59
ma solution n'est pas bonne ?
for ( i = 0; i < numbofinput ; i++) 
{ 
   sum = sum + sizeofarray[i]; 
}
printf("\n This is the sum of your inputs :\n"); 
printf("Sum=%d\n", sum); 
0
acrony Messages postés 14 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
25 nov. 2010 à 13:05
j'ai copié ligne par ligne ta proposition, je l'ai insérée dans mon code. Lors de la compilation cette partie du code n'est pas prise en compte. voici le code complet avec ta solution:

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

int main()
{
int numbofinput = 0, i = 0, sum = 0, product = 0, indice = 0 ;
int* sizeofarray = NULL; // This will be the array

printf("what is the number of your input ? ");
scanf("%d", &numbofinput);

if ( numbofinput > 0) // The user must enter a minimum of one input
{
sizeofarray = malloc( numbofinput * sizeof(int));
if ( sizeofarray == NULL)
{
exit(0);
}

for (i = 0 ; i < numbofinput ; i++)
{
printf("Enter the number n: %d : \n", i + 1);
scanf("%d", &sizeofarray[i]);
}

printf("\n\n This is the list of your inputs :\n");
for (i = 0 ; i < numbofinput ; i++)
{
printf("%d\n", sizeofarray[i]);

}
for ( i = 0; i < numbofinput ; i++)
{
sum = sum + sizeofarray[i];
}
printf("\n This is the sum of your inputs :\n");
printf("Sum=%d\n", sum);
free(sizeofarray);
}
return 0;
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
25 nov. 2010 à 14:07
j'ai fait un copier/coller de ce code dans DevCPP, j'ai ajouté l'accolade manquante à la fin, et il n'y a eu aucun problème.
Es tu sur de bien compiler le bon fichier ? Supprime les anciens code et exécutable en premier lieu.
0
acrony Messages postés 14 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
25 nov. 2010 à 14:16
Salut

C'est bon j'ai fermé codeblocks, puis je l'ai démarré de nouveau compilé. Ça marche au poil. Merci
Bye

Ps: "si c'est pour dire de grosses conneries, mieux vaut s'abstenir." ( MDR)Tu y as été un peu fort avec l'ami Joe. Ça partait d'un bon sentiment...encore merci
0