Plantage du programme

roidusurf Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je suis le tutoriel du site du zéro sur le langage C, je suis arrivé au chapitre sur les fonctions je me suis donc amusé à allé plus loin dans le programme de conversion euros-->franc en l'améliorant de la manière suivante:
Un premier menu où l'on choisis la conversion que l'on veut (menu principal):
1.devise
2.longueur
3.volume

Quand on choisit devise on n'a le choix entre:
1.euros
2.dollar Us
3.livre
4. dollar canadien
5.yen

Quand on choisit longueur on n'a le choix entre:
1.Kilometre\
2.hectometre
3.decametre\n");
4.metre
5.decimetre
6.centimetre
7.milimètre
8.micromètre
9.nanomètre
10.Miles

Une fois la devise choisi il doit normalement avoir demande de la somme à convertir via un scanf, mais le menu des devises se ré affichent et ensuite seulement on me demande la somme. Je m'explique imaginons que je choisisse euros et que je fasse entrée on me redemande la devise si je choisis une nouvelle fois euros la on me demande la somme.

Deuxième problème une fois la somme rentrée le programme plante.

De plus quand je choisis kilometre c'est le menu des devises qui apparaît

Voici mon code: https://code.empreintesduweb.com/2757.html

J'espère avoir été suffisamment clair dans mes explications

Cordialement


3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ca n'existe pas double main().
Il faut mettre : int main(void). main() retourne un int.
C'est printf("%f", ...) pour afficher un double (pas "%lf").

switch (menudevise())
En faisant ça, tu rappelles ta fonction menudevise().
Il faut plutôt sauvegarder la valeur lors du premier appel.
Donc au début du main() :
int choix;
choix=menudevise(); /*là, où tu as appelé menudevise();*/

et switch(choix) /*plutôt que switch(menudevise())*/

Cdlt,
0
roidusurf Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   19
 
Bonjour,
Je vous remercie.

Voici donc mon code :http://code.empreintesduweb.com/2759.html

Mais il y a toujours le même problème en ce qui concerne les menus. Le programme ne plante plus après qu'on est rentré une somme, mais rien ne se passe .
0
roidusurf Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   19
 
problème du menu réglé: http://code.empreintesduweb.com/2760.html
Mais toujours le problème de la non exécution des conversions
0
roidusurf Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   19
 
D'après le site du zéro ici : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c c'est bien %lf qui permet de récupérer une saisie de type double et %f serait pour un type float
0
roidusurf Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   19
 
Non je me suis trompé désolé
0
roidusurf Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   19
 
j'ai fait un truc je sais pas quoi et maintenant sa fonctionne correctement ^^
voilà donc le code qui marche : http://code.empreintesduweb.com/2761.html
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
scanf("%lfn",&sommeentree);
C'est quoi le %lfn ??? J'imagine que c'est \n, il faut pas en mettre dans le scanf.

Donc là ton code fonctionne bien ?
0
masartbenji
 
personne n'aime les prototypes ou quoi??
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
précise le fond de ta pensée...
0