Probleme sur petit programme de débutant - C - Programmation
Marsh Posté le 01-07-2006 à 19:32:06
Salut samos
Bah déjà, perso, j'évite de mettre des variables globales. A moins que tu n'aie des constantes à déclarer ca fait pas super propre.
Ensuite, ce truc:
Code :
|
cay très mal. soit tu met juste
Code :
|
, soit
Code :
|
Là ton else, il exécute la commande qui a juste après cad choix == 2. D'ailleurs t'as mis un ";" pour pouvoir compiler je suppose...
Sinon, autre truc, j'aurais utilisé un getchar() pour faire le choix, vu que tu n'as besoin que d'un caractère. Dans ce cas, tu dois déclarer ta variable choix comme caractère.
Dans tes fonctions, ca renvoie des doubles. faut renvoyer des float si tu veux avoir de la précision. Pareil pour le parametre, si tu veux convertir 12fr50centimes.
Et, pas besoin de mettre du double de partout, ca bouffe quand même en mémoire. du int suffit généralement amplement.
Donc de manière générale, gaffe à tes variables
Bonne prog
Marsh Posté le 01-07-2006 à 20:02:44
Merci de tes précisions
j'ai procédé aux modifications que tu m'as di sauf des variables générales parce que si je ne les met pas au début ca me met que je ne les ai pas déclarer ...
Mais le programme ne marche toujours pas
ca me met toujours 0000 francs = 0000 euros
De plus je n'ai pas compris pour le getchar() je ne connais pas cette commande
Si vous pouviez détaillez ca m'aider parce que la j'ai vraiment du mal
Merci d'avance
Marsh Posté le 01-07-2006 à 20:33:59
samos38 a écrit : j'ai procédé aux modifications que tu m'as di sauf des variables générales parce que si je ne les met pas au début ca me met que je ne les ai pas déclarer ... |
Tu les mets dans ton main() !!!
samos38 a écrit : De plus je n'ai pas compris pour le getchar() je ne connais pas cette commande |
C'est une fonction qui récupère un seul caractère du clavier
samos38 a écrit : Si vous pouviez détaillez ca m'aider parce que la j'ai vraiment du mal |
Ok - Je rectifie un peu ton source (cela n'enfreint pas les règles du forum puisque le source est déjà écrit)
|
Bon, j'ai pas testé mais cela devrait être pas mal. Essaye de regarder les principes de ce programme.
1) jamais de variable globale => cela engendre de la confusion dans la lecture et ouvre la porte aux bugs (n'importe quelle fonction peut modifier une globale)
2) utiliser des noms de fonctions significatifs et éviter dans la mesure du possible des noms de fonctions (comme "euro" ) similaire aux noms de variables (comme "euros" ) => bonjour l'angoisse de la relecture !!!
3) essayer de regrouper différentes variables ayant une utilité similaire et utilisées alternativement en une seule variable plus "générale" => "euros" et "francs" sont devenues "monnaie" (aurait pu aussi s'appeler "somme" )
samos38 a écrit : De plus la boucle if (choix == 1 ); |
Ne reparle jamais de "boucle if" !!!
samos38 a écrit : tourne en boucle et ne veut pas s'arrete avec le return 0 |
Ce comportement est typique d'un "scanf" mal utilisé. Cette fonction est très rigoureuse et attend des entrées "formattées" (c'est à dire bien écrites). Si tu entres un truc qui n'est pas comme il faut, "choix" contient n'importe quoi. En général, pour une saisie manuelle, il vaut mieux éviter "scanf" et utiliser d'autres fonctions comme "getchar()" ou "fgets()".
Marsh Posté le 01-07-2006 à 21:03:38
Ok j'ai compris l'accumulation des choses qui on fait que j'était perdu
Par contre pour l'utilisation de "getchar()" ou "fgets()" je ne connais pas la synthaxe qu'il faut utiliser :
Est ce possible de me l'expliquer , promis c'est la derniere question
Merci beaucoup pour votre aide
Marsh Posté le 01-07-2006 à 21:18:21
samos38 a écrit : Ok j'ai compris l'accumulation des choses qui on fait que j'était perdu |
T'as tord ! Quand j'ai appris le C, j'arrétais pas de poser des questions !!!
samos38 a écrit : Ok j'ai compris l'accumulation des choses qui on fait que j'était perdu |
getchar:
#include <stdio.h> |
fgets:
#include <stdio.h> |
Si tu trouves étrange ce "1000 + 1", c'est une habitude des programmeurs C. Ils montrent ainsi qu'ils ont bien pris en compte le caractère '\0' qui sera rajouté automatiquement par la fonction "fgets" (et toutes les autres fonctions de remplissage de chaîne).
Et le "1000 + 1" dans "fgets" parce que "fgets" s'arrête à "N - 1" quand on lui demande "N" (pour garder justement la place pour ce fameux '\0')
Marsh Posté le 01-07-2006 à 21:37:20
Ok merci beaucoup pour votre aide je vais travailler tout ca et je vais sans doute revenir vous voir
Marsh Posté le 09-07-2006 à 10:55:53
ta invercer tes fonctions , dans l'appele.
Marsh Posté le 09-07-2006 à 10:56:27
ce n'est pas plutot : ?
Code :
|
et l'autre fonction invercement (aussi).
babay [/quotemsg]
Marsh Posté le 10-07-2006 à 14:41:45
big_dadi_fat a écrit : et l'otre fonction invercement (aussi). |
Tu as oublié de massacrer 'fonction' et 'aussi'...
Marsh Posté le 10-07-2006 à 18:21:20
samos38 a écrit : |
et ben quoi, il marche ton convertisseur, 0 == 0 Frs
Marsh Posté le 11-07-2006 à 11:16:01
Sve@r a écrit :
|
Non, non et non.
getchar() renvoie un 'int', pas un 'char'.
Ne pas utiliser 'char'.
Marsh Posté le 11-07-2006 à 19:08:05
simple_stupid a écrit : Non, non et non. |
Boaf... le "int" n'est utile que s'il faut tester "EOF"...
Marsh Posté le 01-07-2006 à 19:05:15
Bonjour
Alors voila j'essaye de faire un convertisseur euros <==> francs
Je fais afin de m'entrainer sur les fonctions :
J'ai créer 2 fonctions en plus de la main afin de convertir dans les 2 sens mais mon programme ne marche pas !
Voici le code :
A la fin ca me met :
0.00000 Euros = 0.0000 Francs
De plus la boucle if (choix == 1 ) tourne en boucle et ne veut pas s'arrete avec le return 0 ;
Merci d'avance pour votre aide
---------------
débute en C