Petit problème avec un programme tout bete [C] [Debutant] - C - Programmation
Marsh Posté le 02-05-2006 à 11:25:48
Max2000 a écrit : Voici mon code : |
Il y a quelques problèmes dans ce code...
|
A lire :
http://mapage.noos.fr/emdel/notes.htm#portee
Notamment : Objets / Shadowing
Marsh Posté le 02-05-2006 à 11:29:58
ReplyMarsh Posté le 02-05-2006 à 11:32:20
Max2000 a écrit : Moi je n'ai aucune erreurs ni warning lors de la compilation |
Ben oui. La première chose à faire, c'est d'apprendre à regler son compilateur en mode paranoïd ... Quel est-il ?
Marsh Posté le 02-05-2006 à 11:33:33
J'utilise Dev C++ comme IDE donc je crois que c'est GCC mon compilateur
Mais je crois que je viens de trouver mon erreur en fait
Ah non, fausse alerte, ça marche pas
Mes fonctions convertef() et convertfe() doivent être obligatoirement à l'exterieur du main() ? Pasque j'ai essayé en les mettant dehors, et ça ne marche pas non plus
Marsh Posté le 02-05-2006 à 11:39:55
Max2000 a écrit : J'utilise DevC++ comme IDE donc je crois que c'est GCC mon compilateur |
Alors je te conseille de le configurer pour qu'il ajoute ceci à la ligne de commade de gcc (ici MinGW, mais peu importe)
- Wall -Wextra -O2 -ansi -pedantic |
Ca fera le ménage...
Marsh Posté le 02-05-2006 à 11:41:06
Max2000 a écrit : Mes fonctions convertef() et convertfe() doivent être obligatoirement à l'exterieur du main() ? |
Oui. Et placées avant, c'est plus simple.
Citation : Pasque j'ai essayé en les mettant dehors, et ça ne marche pas non plus |
"ça ne marche pas" c'est vague... Mais il faut lire toutes mes remarques, notamment concernant les paramètres...
Marsh Posté le 02-05-2006 à 11:41:24
Max2000 a écrit :
|
Une variable non typée est mis à "int" par défaut => tes fonctions reçoivent des double qu'elles transforment en "int"
Code :
|
Et comme l'a dit Emmanuel, sors ces fonctions du "main()". Et remplace la variable "DEVISE" par une macro "DEVISE" (ou alors tu remplaces "DEVISE" par "devise" et tu passes "devise" en 2° paramètre à tes fonctions).
Et prend l'habitude de considérer qu'un identificateur écrit totalement en majuscule est conventionnellement une macro (les variables sont écrites généralement en minuscules avec parfois des majuscules pour identifier les mots => nbCarFic par exemple)
Marsh Posté le 02-05-2006 à 11:48:33
Ca marche désormais, merci à vous
Mais je voulais savoir quelle était la différence entre une macro et une constante ? Dans le chapitre où j'en suis on ne parle pas encore de macro, seulement de constantes et de variables...
Marsh Posté le 02-05-2006 à 11:55:19
Max2000 a écrit : Ca marche désormais, merci à vous |
Une macro est une directive de précompilation
Lors de cette précompilation, le compilo génère un source où toutes les macro sont remplacées par leur correspondance littérale et c'est ce source qui est compilé
avantages:
=> pas de variable donc pas de mémoire pour une macro
=> si la valeur correspondante change, tu ne fais qu'une seule modif et tu recompiles
inconvénients:
=> danger inhérents au remplacement littéral et à la priorité des opérateurs
#define CARRE(x) x * x
=> Tu demandes "CARRE(2 + 3)" => tu obtiens 2 + 3 * 2 + 3 soit 11 au lieu de 25
=> tu demandes "CARRE(i++)" => tu as "i++ * i++" soit i incrémenté de 2 au lieu de 1
Marsh Posté le 02-05-2006 à 13:06:00
Max2000 a écrit : Ca marche désormais, merci à vous |
Code :
|
est un objet nommé a de type int, valeur 123 non modfiable (accès en lecture seule). Son adresse est &a. Ce n'est donc pas une expression constante.
Marsh Posté le 02-05-2006 à 11:11:55
Tout dabord salut
Alors je me suis mis très récement au C (depuis hier) et je suis activement le tuto sur le site du zéro, et j'ai voulu faire un petit programme en C qui convertis des Euros en Francs et vice versa
Le problème c'est qu'il ne marche pas
Voici mon code :
Quand par exemple je veux convertir 100 Francs en Euros je tappe donc 2 pour faire l'action 2, et ensuite 100 pour dire que je veux convertir 100 Francs, et il me sort que ça fait 0
Ya comme un bug Vous pouvez m'aider ?
Merci d'avance
Edit : Tiens ya un jocebug avec l'affichage du code
Et je tiens à preciser que si je passe tout avec des "long" ça marche... Mais je veux garder des "double" pour pouvoir utiliser des nombres décimaux moi
Message édité par Max2000 le 02-05-2006 à 11:15:38