Les boucles dans les sous programmes
skandermouna
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 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
A voir également:
- Les boucles dans les sous programmes
- Complément logiciel microsoft publier au format pdf ou xps pour les programmes microsoft office 2007 - Télécharger - Bureautique
- Programmes au démarrage windows - Guide
- Mettre en veille des programmes - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Comment savoir quels sont les programmes inutiles sur mon pc ? - Guide
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,
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,
Juste:
"N'oublie pas de flusher la sortie avant la fin. Je te conseille donc plutôt de mettre : . "
Tu voulais sûrement dire , ce qui donne:
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 !
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.
Merci pour l'info !
Donc, tu auras s=0, puis s=13, s=26, ainsi de suite.
Si tu n'as pas ça, recompile-le. Si ça ne marche toujours pas, recréée un programme et profites-en pour le corriger comme dit plus haut.