Petit souci en C
Fermé
York_7
Messages postés
101
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
8 août 2010
-
8 mai 2010 à 08:55
York_7 Messages postés 101 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 8 août 2010 - 9 mai 2010 à 12:18
York_7 Messages postés 101 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 8 août 2010 - 9 mai 2010 à 12:18
6 réponses
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
8 mai 2010 à 10:31
8 mai 2010 à 10:31
Salut,
je pense que le prb vient de l'appel de cette fonction:
conversion (double dEuros);
Tu lui passes quoi comme paramètre ici??????;)
@+
je pense que le prb vient de l'appel de cette fonction:
conversion (double dEuros);
Tu lui passes quoi comme paramètre ici??????;)
@+
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
8 mai 2010 à 10:57
8 mai 2010 à 10:57
Effectivement, l'erreur vient d'ici : conversion (double dEuros);
Cette syntaxe est utilisée pour déclarer une fonction, pas pour l'appeler.
Pour l'appeler : conversion(dEuros);
Après, je n'ai pas vu la déclaration de ta variable dEuros.
Cdlt,
Cette syntaxe est utilisée pour déclarer une fonction, pas pour l'appeler.
Pour l'appeler : conversion(dEuros);
Après, je n'ai pas vu la déclaration de ta variable dEuros.
Cdlt,
York_7
Messages postés
101
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
8 août 2010
1
8 mai 2010 à 11:02
8 mai 2010 à 11:02
Ok alors:
voici le header:
/* Prototypes */
double conversion (double dEuros);
/* Constantes */
#define EURO2FRANCS 6.55957
et la fonction du devise.c:
double conversion (double dEuros)
{
return( dEuros * EURO2FRANCS );
}
voici le header:
/* Prototypes */
double conversion (double dEuros);
/* Constantes */
#define EURO2FRANCS 6.55957
et la fonction du devise.c:
double conversion (double dEuros)
{
return( dEuros * EURO2FRANCS );
}
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
Modifié par chuka le 8/05/2010 à 11:29
Modifié par chuka le 8/05/2010 à 11:29
Salut,
tu peux essayer un truc du style:
@+
Ce n'est pas parce que certaines choses semblent inexplicables, qu'il faut faire semblant de les expliquer!
tu peux essayer un truc du style:
int main (int argc, char *argv[]) { int type_conversion = 0, choix_menu = 0 ; double dEuros; do { printf ("Choix de votre conversion:\n\n"); printf ("1. ==> Devise\n"); printf ("2. ==> Duree\n"); scanf ("%d", &type_conversion ); switch (type_conversion ) { case 1 : printf ("Entree la devise\n"); scanf ("%Lf", &dEuros); printf ("%Lf\n",conversion (dEuros)); break; } } while (type_conversion >=1 && type_conversion <6); return 0; }
@+
Ce n'est pas parce que certaines choses semblent inexplicables, qu'il faut faire semblant de les expliquer!
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
8 mai 2010 à 11:30
8 mai 2010 à 11:30
Attention, dEuros est un double et la fonction conversion renvoie un double.
Donc :
scanf ("%Lf", &dEuros);
C'est pas Lf qu'il faut mettre mais : scanf("%lf",&dEuros); (le L doit être en minuscule).
printf ("%Lf\n",conversion (dEuros));
Pareil, ce n'est pas Lf qu'il faut mettre mais tout simplement : printf("%f",conversion(dEuros));
Donc :
scanf ("%Lf", &dEuros);
C'est pas Lf qu'il faut mettre mais : scanf("%lf",&dEuros); (le L doit être en minuscule).
printf ("%Lf\n",conversion (dEuros));
Pareil, ce n'est pas Lf qu'il faut mettre mais tout simplement : printf("%f",conversion(dEuros));
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
Modifié par chuka le 8/05/2010 à 11:36
Modifié par chuka le 8/05/2010 à 11:36
Autant pour moi!!
J'utilise tellement peu scanf et printf...que je me suis mélangé les double et long double..!!;)
Merci pour la precision!!
@+
J'utilise tellement peu scanf et printf...que je me suis mélangé les double et long double..!!;)
Merci pour la precision!!
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
York_7
Messages postés
101
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
8 août 2010
1
8 mai 2010 à 13:01
8 mai 2010 à 13:01
Salut chuka,
j'aurai dû te montrer tout mon devise.c:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
//COULEUR
void Color(int couleurDuTexte,int couleurDeFond) {
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
int devise()
{
int choix=0, val_entree=0, val_sortie=0;
do
{
printf ("Choississez votre conversion:...\n\n");
Color (9,0);
printf (" ++++ MENU DEVISE ++++\n\n");
Color (14,0);
printf ("1. EUROS ==> FRANCS");
printf ("\t 2. EUROS ==> LIVRES");
printf ("\t 3. EUROS ==> DOLLARDS\n\n");
printf ("4. DOLLARDS ==> EUROS");
printf ("\t5. LIVRES ==> EUROS");
printf ("\t6. FRANCS ==> EUROS");
Color (15,0);
printf ("\n\n...");
if (choix == 1)
{
printf ("Valeure à convertir :\n...");
scanf ("%lf", &val_entree);
val_sortie = conversion ( val_entree );
printf ("%f € = %f FF", val_entree, val_sortie);
}
} while (choix < 1 || choix > 6);
}
double conversion (double dEuros)
{
return( dEuros * EURO2FRANCS );
}
Donc c'est pas à ce niveau que ça coince.
Error syntax before "double" dans ma main.c, ça doit pas être grand chose pourtant.
j'aurai dû te montrer tout mon devise.c:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
//COULEUR
void Color(int couleurDuTexte,int couleurDeFond) {
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
int devise()
{
int choix=0, val_entree=0, val_sortie=0;
do
{
printf ("Choississez votre conversion:...\n\n");
Color (9,0);
printf (" ++++ MENU DEVISE ++++\n\n");
Color (14,0);
printf ("1. EUROS ==> FRANCS");
printf ("\t 2. EUROS ==> LIVRES");
printf ("\t 3. EUROS ==> DOLLARDS\n\n");
printf ("4. DOLLARDS ==> EUROS");
printf ("\t5. LIVRES ==> EUROS");
printf ("\t6. FRANCS ==> EUROS");
Color (15,0);
printf ("\n\n...");
if (choix == 1)
{
printf ("Valeure à convertir :\n...");
scanf ("%lf", &val_entree);
val_sortie = conversion ( val_entree );
printf ("%f € = %f FF", val_entree, val_sortie);
}
} while (choix < 1 || choix > 6);
}
double conversion (double dEuros)
{
return( dEuros * EURO2FRANCS );
}
Donc c'est pas à ce niveau que ça coince.
Error syntax before "double" dans ma main.c, ça doit pas être grand chose pourtant.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
8 mai 2010 à 13:22
8 mai 2010 à 13:22
Salut,
pour le fichier devise.c
et le main:
ca devrait faire l'affaire!!;))
@+
pour le fichier devise.c
int devise() { int choix=0; double val_entree=0; double val_sortie=0; printf ("Choississez votre conversion:...\n\n"); Color (9,0); do { printf (" ++++ MENU DEVISE ++++\n\n"); Color (14,0); printf ("1. EUROS ==> FRANCS"); printf ("\t 2. EUROS ==> LIVRES"); printf ("\t 3. EUROS ==> DOLLARDS\n\n"); printf ("4. DOLLARDS ==> EUROS"); printf ("\t5. LIVRES ==> EUROS"); printf ("\t6. FRANCS ==> EUROS\n"); Color (15,0); scanf("%d",&choix); if (choix == 1) { printf ("Valeure à convertir :\n"); scanf ("%lf", &val_entree); val_sortie = conversion ( val_entree ); printf ("%f € = %f FF\n", val_entree, val_sortie); } } while (choix >= 1 && choix <7); return choix; }
et le main:
int main (int argc, char *argv[]) { int choix_menu = 0; int type_conversion = 0; do { printf ("Choix de votre conversion:\n\n"); printf ("1. ==> Devise\n"); printf ("2. ==> Duree\n"); scanf ("%d", &choix_menu); switch (choix_menu) { case 1 : type_conversion=devise(); break; } } while (type_conversion >=1 && type_conversion <6); return 0; }
ca devrait faire l'affaire!!;))
@+
York_7
Messages postés
101
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
8 août 2010
1
8 mai 2010 à 13:34
8 mai 2010 à 13:34
Okey mais....pourquoi tu renvoie type_conversion à devise ? :
type_conversion=devise();
bref ce n'est pas grave je remplace par type_conversion = conversion (double dEuros)
mais ça ne résous toujours pas l'erreur qui apparait.
type_conversion=devise();
bref ce n'est pas grave je remplace par type_conversion = conversion (double dEuros)
mais ça ne résous toujours pas l'erreur qui apparait.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
Modifié par chuka le 8/05/2010 à 14:16
Modifié par chuka le 8/05/2010 à 14:16
Tu sors de ta boucle principale si type_conversion n'est pas compris entre 1et 6...c'est ce qui te fais sortir de devise()....
Sinon, tu sors direct de ta boucle principal....(car type_conversion =0 à l'init...)
type_conversion=devise(); fonctionne très bien...
type_conversion = conversion (double dEuros) ????? conversion te renvoie un double.....pas un int....ce que tu veux c'est le resultat de la conversion, non?? en double et non en int!!Et l'appel de ta fonction conversion dois prendre en parametre un double, comme tu l'a bien fais dans la fonction devise()....qui appel correctement cette fonction!!!
Donc je comprends pas où tu bloque....
Sinon, tu sors direct de ta boucle principal....(car type_conversion =0 à l'init...)
type_conversion=devise(); fonctionne très bien...
type_conversion = conversion (double dEuros) ????? conversion te renvoie un double.....pas un int....ce que tu veux c'est le resultat de la conversion, non?? en double et non en int!!Et l'appel de ta fonction conversion dois prendre en parametre un double, comme tu l'a bien fais dans la fonction devise()....qui appel correctement cette fonction!!!
Donc je comprends pas où tu bloque....
York_7
Messages postés
101
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
8 août 2010
1
8 mai 2010 à 19:21
8 mai 2010 à 19:21
Non il y a plein d'erreur et devise ne renvoie rien donc doit être de type void et pas int, de plus il y a plein d'erreur au niveau des fonctions.
J'ai refais le code, ce qui donne ceci:
MAIN.C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "devise.h"
int main (int argc, char *argv[])
{
int choix_menu = 0 ;
do
{
printf ("Choix de votre conversion:\n\n");
printf ("1. ==> Devise\n");
printf ("2. ==> Duree\n");
scanf ("%d", &choix_menu);
switch (choix_menu)
{
case 1 :
devise();
break;
}
} while (choix_menu <1 || choix_menu >6);
return 0;
}
================================================================
DEVISE.C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
//COULEUR
void Color(int couleurDuTexte,int couleurDeFond) {
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
void devise()
{
int choix=0;
double val_entree=0, val_sortie=0;
do
{
printf ("Choississez votre conversion:...\n\n");
Color (9,0);
printf (" ++++ MENU DEVISE ++++\n\n");
Color (14,0);
printf ("1. EUROS ==> FRANCS");
printf ("\t 2. EUROS ==> LIVRES");
printf ("\t 3. EUROS ==> DOLLARDS\n\n");
printf ("4. DOLLARDS ==> EUROS");
printf ("\t5. LIVRES ==> EUROS");
printf ("\t6. FRANCS ==> EUROS");
Color (15,0);
printf ("\n\n...");
scanf ("%d", &choix);
if (choix == 1)
{
printf ("Valeure à convertir :\n...");
scanf ("%lf", &val_entree);
val_sortie = euros_francs(val_entree);
printf ("%f € = %f FF", val_entree, val_sortie);
}
} while (choix < 1 || choix > 6);
}
double euros_francs(double val_entree)
{
double val_sortie = 0;
val_sortie = 6.55957 * val_entree;
return val_sortie;
}
================================================================
DEVISE.H
double euros_francs(double val_entree);
================================================================
le debugger signal encore 2 erreurs, avec la variable euros_francs notamment mais le code est déjà "plus" correct qu'auparavant.
J'ai refais le code, ce qui donne ceci:
MAIN.C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "devise.h"
int main (int argc, char *argv[])
{
int choix_menu = 0 ;
do
{
printf ("Choix de votre conversion:\n\n");
printf ("1. ==> Devise\n");
printf ("2. ==> Duree\n");
scanf ("%d", &choix_menu);
switch (choix_menu)
{
case 1 :
devise();
break;
}
} while (choix_menu <1 || choix_menu >6);
return 0;
}
================================================================
DEVISE.C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
//COULEUR
void Color(int couleurDuTexte,int couleurDeFond) {
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
void devise()
{
int choix=0;
double val_entree=0, val_sortie=0;
do
{
printf ("Choississez votre conversion:...\n\n");
Color (9,0);
printf (" ++++ MENU DEVISE ++++\n\n");
Color (14,0);
printf ("1. EUROS ==> FRANCS");
printf ("\t 2. EUROS ==> LIVRES");
printf ("\t 3. EUROS ==> DOLLARDS\n\n");
printf ("4. DOLLARDS ==> EUROS");
printf ("\t5. LIVRES ==> EUROS");
printf ("\t6. FRANCS ==> EUROS");
Color (15,0);
printf ("\n\n...");
scanf ("%d", &choix);
if (choix == 1)
{
printf ("Valeure à convertir :\n...");
scanf ("%lf", &val_entree);
val_sortie = euros_francs(val_entree);
printf ("%f € = %f FF", val_entree, val_sortie);
}
} while (choix < 1 || choix > 6);
}
double euros_francs(double val_entree)
{
double val_sortie = 0;
val_sortie = 6.55957 * val_entree;
return val_sortie;
}
================================================================
DEVISE.H
double euros_francs(double val_entree);
================================================================
le debugger signal encore 2 erreurs, avec la variable euros_francs notamment mais le code est déjà "plus" correct qu'auparavant.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
Modifié par chuka le 9/05/2010 à 09:42
Modifié par chuka le 9/05/2010 à 09:42
Salut,
Non il y a plein d'erreur et devise ne renvoie rien
Je me suis juste inspirer du code que tu as posté.....;) car le code que je t'ai precedemment posté tourne correctement....
le debugger signal encore 2 erreurs, avec la variable euros_francs notamment
Sinon, je pense qu'il faut juste que tu "include" le fichier devise.h dans le fichier devise.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#include "devise.h"
//COULEUR
void Color(int couleurDuTexte,int couleurDeFond) {
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
void devise()
{
int choix=0;
double val_entree=0, val_sortie=0;
do
{
printf ("Choississez votre conversion:...\n\n");
Color (9,0);
printf (" ++++ MENU DEVISE ++++\n\n");
Color (14,0);
printf ("1. EUROS ==> FRANCS");
printf ("\t 2. EUROS ==> LIVRES");
printf ("\t 3. EUROS ==> DOLLARDS\n\n");
printf ("4. DOLLARDS ==> EUROS");
printf ("\t5. LIVRES ==> EUROS");
printf ("\t6. FRANCS ==> EUROS");
Color (15,0);
printf ("\n\n...");
scanf ("%d", &choix);
if (choix == 1)
{
printf ("Valeure à convertir :\n...");
scanf ("%lf", &val_entree);
val_sortie = euros_francs(val_entree);
printf ("%f € = %f FF", val_entree, val_sortie);
}
} while (choix < 1 || choix > 6);
}
double euros_francs(double val_entree)
{
double val_sortie = 0;
val_sortie = 6.55957 * val_entree;
return val_sortie;
}
================================================================
DEVISE.H
double euros_francs(double val_entree);
void devise() ;
================================================================
Non il y a plein d'erreur et devise ne renvoie rien
Je me suis juste inspirer du code que tu as posté.....;) car le code que je t'ai precedemment posté tourne correctement....
le debugger signal encore 2 erreurs, avec la variable euros_francs notamment
Sinon, je pense qu'il faut juste que tu "include" le fichier devise.h dans le fichier devise.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#include "devise.h"
//COULEUR
void Color(int couleurDuTexte,int couleurDeFond) {
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
void devise()
{
int choix=0;
double val_entree=0, val_sortie=0;
do
{
printf ("Choississez votre conversion:...\n\n");
Color (9,0);
printf (" ++++ MENU DEVISE ++++\n\n");
Color (14,0);
printf ("1. EUROS ==> FRANCS");
printf ("\t 2. EUROS ==> LIVRES");
printf ("\t 3. EUROS ==> DOLLARDS\n\n");
printf ("4. DOLLARDS ==> EUROS");
printf ("\t5. LIVRES ==> EUROS");
printf ("\t6. FRANCS ==> EUROS");
Color (15,0);
printf ("\n\n...");
scanf ("%d", &choix);
if (choix == 1)
{
printf ("Valeure à convertir :\n...");
scanf ("%lf", &val_entree);
val_sortie = euros_francs(val_entree);
printf ("%f € = %f FF", val_entree, val_sortie);
}
} while (choix < 1 || choix > 6);
}
double euros_francs(double val_entree)
{
double val_sortie = 0;
val_sortie = 6.55957 * val_entree;
return val_sortie;
}
================================================================
DEVISE.H
double euros_francs(double val_entree);
void devise() ;
================================================================
York_7
Messages postés
101
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
8 août 2010
1
9 mai 2010 à 12:18
9 mai 2010 à 12:18
Ah okok, on s'était emmêlé les pinceaux alors :p
Merci beaucoup ! ça fonctionne ;-)
Merci beaucoup ! ça fonctionne ;-)