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
Bonjour à tous,
voilà j'ai un infime souci:

"error syntaxe before "double"


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "devise.h"



int main (int argc, char *argv[])

{

int type_conversion = 0, choix_menu = 0 ;

do
{

printf ("Choix de votre conversion:\n\n");
printf ("1. ==> Devise\n");
printf ("2. ==> Duree\n");
scanf ("%d", &choix_menu);




switch (type_conversion)
{
case 1 :
conversion (double dEuros);
break;
}
} while (type_conversion <1 || type_conversion >6);
return 0;
}


Je ne la trouve pas...

merci


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
Salut,
je pense que le prb vient de l'appel de cette fonction:
conversion (double dEuros);
Tu lui passes quoi comme paramètre ici??????;)
@+
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
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,
0
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
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 );
}
0
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
Salut,
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!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
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));
0
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
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!!
@+
0

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
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.
0
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
Salut,
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!!;))
@+
0
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
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.
0
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
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....
0
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
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.
0
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
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() ;
================================================================
0
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
Ah okok, on s'était emmêlé les pinceaux alors :p
Merci beaucoup ! ça fonctionne ;-)
0