Somme des n premmiers nombres en C

Résolu
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,



je suis entrain de commencer a programmer en C et je suis coince sur ce code. Je voudrais en fait faire la somme des n premiers chiffres. J'utilise une boucle ''do while'' et la décrémentation. Mais le résultat est incohérent. Un coup de main les gars...

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

int main()
{
int n = 0, sum = 0;
printf("Input the number : ");
scanf("%d", &n);
printf("%d", &n);
do {n + n--;
}while( n-- > 0);

sum = n + n--;
printf("The result is: ");
printf("%d", &sum);
A voir également:

6 réponses

Tatanos Messages postés 966 Date d'inscription   Statut Membre Dernière intervention   156
 
Bonjour,

Le but est, par exemple, de calculer la somme de 1 à 80 si tu lui passe 80 en paramètre ? (n = 80 quoi)
0
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Salut

oui c'est ca le truc
0
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
Bonjour,

Ca fait longtemps que j'ai pas fait de C, mais là comme ça, je vois que tu décrémentes n deux fois dans la boucle.
0
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Salut

en fait, je me disais que tant que n-- > 0 on décrémente. c'est a dire que par ex: si je prends n=5, tant que 5-- >0 on doit pouvoir avoir 5+(5-1)+(5+(5-1-1)) etc jusqu'à ce que 5-- soit égal a zéro je me sers de la décrémentation de n comme d'un compteur et le calcul qui se fait sur n+n-- s'arrête quand n-- est égale a zéro. Je sais pas si je suis clair ou logique, peut-être que je me goure...
0
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
j'utilise codeblocks, et j'ai applique la formule mathématiques des n premiers nombres soufflée par tatanos (N * (N+1)) / 2 au lieu de mon code, les résultats sont toujours aussi incohérents par exemple avec 10 comme valeur j'ai un résultat de l'ordre du million alors que je devrais avoir 55, c'est d'ailleurs le même résultat quelques soient la valeur de n
0
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
poste ton code avec les balises < code> < /code>
0
Tatanos Messages postés 966 Date d'inscription   Statut Membre Dernière intervention   156
 
Bon, du coup je n'y connais rien en C, mais je peux te donner une formule mathématique pour calculer la somme des N premiers nombres qui est :

(N * (N+1)) / 2
0
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
merci
0
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
Re, j'ai fait des test et effectivement ya plusieurs problemes.
Déja, tu décrémentes 2 fois donc tu fais -2 à chaque calcul.
Ensuite, ici, aucune valeur n'augmente. Tu ne fais que décrémenter n, ça ne peut pas te donner de résultat.

Voila ce que je te conseille:
1) soit tu prend la formule de tatanos.
2) soit tu veux utiliser des boucles, et dans ce cas:
tu input n;
tu places sum à la valeur de n;
tant que n > 0, tu additionne n à la valeur de sum.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitch@n Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   66
 
Salut ;)

Je pense que c'est ca que tu veux ;) essaye de bien comprendre le code

Voila le code avec un for

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


int main(){ 
  int n = 0, sum = 0, i = 0;   
  printf("Input the number : "); 
  scanf("%d", &n); 
  printf("%d\n", n); 
  sum = n;    
  for(i=0; i<n ;i++){ 
 sum += n-i;  
  }   
   
  printf("The result is: %d\n", sum); 
} 


ici avec un do-while

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


int main(){ 
  int n = 0, sum = 0, i = 0;   
  printf("Input the number : "); 
  scanf("%d", &n); 
  printf("%d\n", n); 
  sum = n;    
  do{ 
 sum += n-i; 
 i++; 
  }while(i < n);  
   
  printf("The result is: %d\n", sum); 
} 



Valou ;) en espérant ne pas me tromper

Si l'argent se trouvait sur les arbres,
les femmes aimeraient les singes.
0
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
C'est ça, mais je voulais qu'il le fasse lui même^^
0
Pitch@n Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   66
 
Toute mes excuses ^^
Essaye de le refaire sans regarder Arcony

Ta variable sum est modifié a chaque passage dans la boucle c'est donc dans la boucle que tu dois avoir ton sum = ...

0
acrony Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Ok mais j'ai opte pour l'application toute bête de la formule mathématique et ca marche mais je vais teste tes suggestions.
Merci
0