Calculer la somme en utilisant la boucle"pour"ou bien"tant que"? [Fermé]

Signaler
Messages postés
7
Date d'inscription
lundi 28 décembre 2015
Statut
Membre
Dernière intervention
29 décembre 2015
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
salut à tous , je suis un débutant en programmation et merci de m'aider à résoudre cette question s'il vous plait :

_ comment écrire en programme (c) un programme qui permet de calculer la somme suivante :( 1 + 2 + 3 + ... + n ) ? peut'on le faire avec la boucle "pour" ?

normalement on doit utilisé la boucle "tant que" pourquoi ?

merci d'avance et belle journée pour vous :) .

3 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 757
Bonjour,
Qu'est-ce qui te bloque ? La partie algorithmique ou la partie "code en C" ?
Oui, cela peut se faire avec une boucle for ou même une boucle while.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 757 >
Messages postés
7
Date d'inscription
lundi 28 décembre 2015
Statut
Membre
Dernière intervention
29 décembre 2015

Bonjour,

Mes remarques sur l'algorithme :
Ce n'est pas bon. Là, tu ne fais pas 1+2+3+4, mais n+1.
Il faudrait plutôt additionner s et i. Je te laisse réfléchir sur la manière de faire.

Maintenant, mes remarques sur le code :
void main()
Le bon prototype du main() sans argument est : int main(void)
Aussi, il ne faut pas oublier le return 0; avant l'accolade finale.

conio.h et getch()
Attention, ce n'est pas portable. Utilise plutôt getchar().
clrscr()
De même, non portable. Entre nous, cela a plus tendant à énerver l'utilisateur lorsqu'on supprime sa console. Donc tu n'es même pas obligé de mettre :-).

printf("s=%d",s);
N'oublie pas de mettre un \n après %d (pour forcer l'affichage avant la fin du programme).

Pour le deuxième programme :
for(i=0,i<=n,i++)
Attention, ce sont des ; (et non des ,) pour séparer les conditions du for.

N'hésite pas à reposter ton code corrigé pour qu'on vérifie.

Note : n'oublie pas d'utiliser la balise <code c> pour poster ton code proprement.
Exemple :
<code c>
ici tu mets ton code
</code>
Messages postés
7
Date d'inscription
lundi 28 décembre 2015
Statut
Membre
Dernière intervention
29 décembre 2015

salut ,désolé en vérité j'ai fais { s=s+i }, et pas "s=s+1" dans le programme et j'ai mal recopier , voici le même programme corrigé comme tu me l'as demandé
 
#include<stdio.h>
#include<conio.h>
void main (void)
 { int i,n,s;
   printf("donner n=");
   scanf("%d",&n);
   for(i=0;i<=n;i++)
   {s=s+i;
   } 
   printf("s=%d\n",s);
   getchar();
   return ; 
 }
   


et là même probleme le resulta n'est pas juste car lorsque je lui donne n=5 le resulta est :s=1237
alors que normalement s=15

ah vous savais je pense que la faute pouvais bien être sur ( ne pas avoir donner une valeur pour la somme "s" de l’initialisation oui c'est ça :) merci beaucoup de votre aide je vais envoyer le bon code ... et ça marche n=5,s=15 )
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 757
Bonjour,

Oui, il est vital d'initialiser les variables avant de les utiliser. Sinon, elles contiennent une valeur "bidon". D'où ton résultat.

Note : tu as mis void main(void) mais c'est int main(void) qu'il faut mettre.
Et à la fin, c'est return 0; (et non return;)
Et du coup, tu peux retirer #include <conio.h> qui ne te sert plus à rien maintenant.
Messages postés
7
Date d'inscription
lundi 28 décembre 2015
Statut
Membre
Dernière intervention
29 décembre 2015

la réponse est :
#include<stdio.h>
int main (void)
 { int i,n,s=0;
   printf("donner n=");
   scanf("%d",&n);
   for(i=0;i<=n;i++)
   {s=s+i;
   } 
   printf("s=%d\n",s);
   getchar(); 
return 0;  }

merci pour votre aide fiddy ^_^
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 757
L'indentation n'est pas superbe. Mais en tout cas, ton programme est nickel ;-).
A plus sur CCM
Messages postés
24
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
30 décembre 2015
3
Tu peux le faire avec une for(unsigned int i=0; i<=n;++i)
Ou avec while (i++<n)
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 757
Il vaut mieux ne pas mélanger code et déclaration.
En C (même si autorisé en ISO C99), on sortira plutôt unsigned int du for.
Messages postés
24
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
30 décembre 2015
3
DSL, je suis surtout sur du C++
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 757 >
Messages postés
24
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
30 décembre 2015

Yep, mais ici c'est le forum C, pas C++ ;-).
Messages postés
7
Date d'inscription
lundi 28 décembre 2015
Statut
Membre
Dernière intervention
29 décembre 2015

merci en tout cas :)
Messages postés
7
Date d'inscription
lundi 28 décembre 2015
Statut
Membre
Dernière intervention
29 décembre 2015

voici comment faire pour calculer la somme 1+2+3+...+n avec la boucle (for) avant cela je réponds au autre question :
2- on peut faire cette somme avec la boucle "for" et on peut aussi avec la boucle "while".
1- pour le code "c" voici comment on fait :
#include<stdio.h>
int main (void)
 { int i,n,s=0;
    printf("donner n=");
    scanf("%d",&n);
    for(i=0;i<=n;i++)
    { s=s+i;
    } 
    printf("s=%d\n",s);
    getchar(); 
   return 0;  
}