Les boucles dans les sous programmes
skandermouna
Messages postés
5
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
voici mon prog.
le variable s avant la boucle 0 mais lors n entre dans la boucle elle change de valeur .
Est-ce que c un prob dans la mémoire ou dans la boucle .
merci d'avance :)
EDIT: Ajout de la coloration syntaxique.
Rosa La Signorita
#include<stdio.h>
int a=5;
int b=8;
int test(int a,int b)
{
int i;
int s=0;
for(i=1;i<=50;i++)
{
printf ("%d \n",s);
s=s+(a+b);
}
return s ;
}
void main ()
{
printf("%d",test(a,b));
}
le variable s avant la boucle 0 mais lors n entre dans la boucle elle change de valeur .
Est-ce que c un prob dans la mémoire ou dans la boucle .
merci d'avance :)
EDIT: Ajout de la coloration syntaxique.
Rosa La Signorita
1 réponse
-
Bonjour,
Pourquoi enlever le "Bonjour" mis en place automatiquement ???
Sinon, plein d'erreurs dans le code :
void main()
Non standard. On utilise plutôt : int main(void)
De fait, il ne faut pas oublier : return 0; en fin de main().
printf("%d",test(a,b));
N'oublie pas de flusher la sortie avant la fin. Je te conseille donc plutôt de mettre : %\n.
int a=5;
int b=8;
Évite les variables globales. Surtout si c'est pour les envoyer en paramètres de fonction. Sinon, tu te mélangeras les pinceaux.
Mets donc plutôt int a=5; et int b=8; dans ton main().
for(i=1;i<=50;i++)
Ce n'est pas une erreur, mais pour éviter que tu la fasses dans le cas de tableaux, je la signales quand même : en C, on commence à 0.
Donc plutôt : for(i=0;i<50;i++)
Sinon, pour ta question, c'est normal que s change de valeur.
Si ça ne changeait pas de valeur, quel serait l'intérêt de l'afficher plusieurs fois de suite ? C'est le code s=s+(a+b); qui change la valeur de la variable.
Cdlt,-
Réponse aussi complète que toujours ;-)
Juste:
"N'oublie pas de flusher la sortie avant la fin. Je te conseille donc plutôt de mettre :%\n
. "
Tu voulais sûrement dire%d\n
, ce qui donne:printf("%d\n",test(a,b));
Cela rajoute en fait un caractère de retour à la ligne de sorte que les prochains caractères affichés le soient sur la ligne suivante.
Cela évite des aberrations d'affichage; ceux qui utilisent linux couramment ne le savent que trop bien ! -
Yes, bien évidemment, c'est "%d\n" que je voulais mettre :-).
Cela rajoute en fait un caractère de retour à la ligne de sorte que les prochains caractères affichés le soient sur la ligne suivante.
Cela a surtout pour but de forcer l'affichage du buffer écran. On a ainsi la garantie que le nombre soit affiché. Après, effectivement, c'est mieux de mettre un '\n' qu'un fflush(stdout) en fin de programme pour les problèmes que tu as cités. -
-
-
-