Problème en programme C !!
Fermé
anonymous
-
15 mars 2009 à 12:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 mars 2009 à 14:10
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 mars 2009 à 14:10
A voir également:
- Problème en programme C !!
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Frequence programme national ✓ - Forum Messagerie
- Programme demarrage windows 10 - Guide
- Programme bonjour ✓ - Forum Windows
- Programme démarrage windows 10 - Guide
7 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
15 mars 2009 à 13:05
15 mars 2009 à 13:05
Salut,
Tu as utilisé : i=i++, et c'est un comportement indéfini.
Essaie donc :
Par ailleurs, j'ai remplacé, le prototype de main puisqu'il doit renvoyer un int. J'ai enlevé tes variables globales qui doivent être évitées sauf cas particulier. Et j'ai enlevé ton i=i++ pour i++ tout simplement.
Cdlt
Tu as utilisé : i=i++, et c'est un comportement indéfini.
Essaie donc :
#include <stdio.h>
int main(void)
{
int nb,i,fact;
printf("Donnez un nombre: ");
scanf("%d",&nb);
fact = 1;
i=1;
while(i<=nb)
{
fact = fact*i;
i++;
}
printf("Le factoriel de %d est %d\n", nb, fact);
getchar();
return 0;
}
Par ailleurs, j'ai remplacé, le prototype de main puisqu'il doit renvoyer un int. J'ai enlevé tes variables globales qui doivent être évitées sauf cas particulier. Et j'ai enlevé ton i=i++ pour i++ tout simplement.
Cdlt
Salut,
ha bon y'a toujours un problème ?
Parce que d'après ce que j'ai testé avec les factorielles de 8, 9 et 10, y'a pas d'erreurs.....
Par contre j'ai remplacé le getchar(); par un system("PAUSE");
ha bon y'a toujours un problème ?
Parce que d'après ce que j'ai testé avec les factorielles de 8, 9 et 10, y'a pas d'erreurs.....
Par contre j'ai remplacé le getchar(); par un system("PAUSE");
Et en plus je viens d'essayer avec getchar();mais c'est bien getch(); qu'il faut mettre....
Je suppose que t'es ptetre sous dev c++ et que tu fais ça pour pas que la fenetre se ferme hyper rapidement ^^
Je suppose que t'es ptetre sous dev c++ et que tu fais ça pour pas que la fenetre se ferme hyper rapidement ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Beh j'ai remplacé le getch() par un system("pause"), mais il ya toujours le probleme a partir du 8 !! :S
Est ce que ca na rien avoir avec le type des nombres et tout ca ? ( je parle de %i ou %d .. etc) !!
Merci !!
Est ce que ca na rien avoir avec le type des nombres et tout ca ? ( je parle de %i ou %d .. etc) !!
Merci !!
D'ailleus c'est koi le ( int main (void) ) ???
je né jamais vu ça sur un programme !! Enfin jusqu'à ici !!
je né jamais vu ça sur un programme !! Enfin jusqu'à ici !!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
15 mars 2009 à 14:10
15 mars 2009 à 14:10
J'ai mis volontairement getchar() au lieu de getch() qui demande l'inclusion de conio.h. Cette fonction n'est donc pas portable. Ainsi vaut-il mieux lui préférer getchar() qui appartient à stdio.h donc portable.
En C comme en C++, main() doit renvoyer un int. De plus, en C, pour définir une fonction sans argument, il faut employer le prototype type main(void).
La combinaison des deux fait qu'on met : int main(void). Si tu veux récupérer les paramètres alors tu peux employer le prototype : int main(int argc, char **argv) ou int main(int argc, char* argv[].
Cdlt
En C comme en C++, main() doit renvoyer un int. De plus, en C, pour définir une fonction sans argument, il faut employer le prototype type main(void).
La combinaison des deux fait qu'on met : int main(void). Si tu veux récupérer les paramètres alors tu peux employer le prototype : int main(int argc, char **argv) ou int main(int argc, char* argv[].
Cdlt