IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Petit programme. Erreurs de compilation!


Sujet :

C

  1. #1
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut Petit programme. Erreurs de compilation!
    Bonjour à tous !

    Toujours autant débutant en C, alors je viens vous demander un peu d'aide pour mon petit programme que je fais "pour le fun".

    La compilation ne marche pas et je ne sais pas pourquoi.
    Désolé pour la médiocrité de mon code

    Main.C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    /*****************************************************************************/
    /*                                                                           */
    /*                              Main                                         */
    /*                                                                           */
    /*****************************************************************************/
     
    int main(void)
    {
        char type;
        int choix, i;
        int chevaux = 0;
        int rv = 0;
        int num[TAILLE_TAB] = {1};
        float pos[TAILLE_TAB] = {0.0};
     
        puts("|--------------------------------------------------------------------------|");
    	puts("|Bienvenue-----------------------------------------------------------------|");
    	puts("|Ce programme essaye de vous donner les meilleures chances de gagner au PMU|");
    	puts("|A l'aide de différentes combinaisons--------------------------------------|");
    	puts("|--------------------------------------------------------------------------|\n");
     
        nombre(chevaux);
        course(chevaux);
     
        puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	puts("\t 1-Resultat Favoris"); /* A venir */
    	puts("\t 2-Resultat Aleatoire"); /* A venir */
    	puts("\t 3-Verification saisie");
        puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	do  {
    	    printf("Saisissez votre choix : ");
    	   	choix=getchar();
        }
    	while(( choix<'1')||(choix>'2'));
     
    	switch(choix)
    	{
        	case '1':printf("favoris()");break;
        	case '2':printf("aleatoire()");break;
        	case '3':affichestandard(chevaux, int *num[i], float *pos[i]);break;
    	}
    	while(choix!='3');
     
        return 0;
    }
    fctpmu.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void purge(void);
    int nombre(int);
    void course(int);
    void affichestandard(int, int *, float *);
    void saisie(int, int, int *, float *);
    fctpmu.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    void purge(void)
    {
    	int c;
    	while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
    int nombre(int chevaux)
    {
    	do
        {
            printf("* Combien de chevaux sont au depart ? (max. %d) : ", TAILLE_TAB);
            fflush(stdout);
            rv = scanf("%d", &chevaux);
            purge();
        }
        while (rv != 1 || chevaux < 0 || chevaux > TAILLE_TAB);
    }
     
    void course(int chevaux)
    {
        do {
    	puts("* De quel type de course s'agit-il ?");
    	puts("Pour une course au trot, saisir T; pour le galop, saisir G.");
    	scanf("%s", &type);}
    	while (((type!='t') && (type!='T')) && ((type!='g') && (type!='G')));
     
        if ((type=='t') || (type=='T')){
    	    printf("C'est une course au trot avec %d chevaux au depart.\n",chevaux);}
    	if ((type=='g') || (type=='G')){
    	    printf("C'est une course au galop avec %d chevaux au depart.\n",chevaux);}
    }
     
     
     
    void saisie(rv, chevaux, *num[i], *pos[i])
    {
        int i;
     
            for ( i = 0 ; i < chevaux ; i++ ) {
            do {
                printf("Saisissez le %d%s cheval : ", i + 1, (i>0)?"e":"er");
                fflush(stdout);
                rv = scanf("%d", *num + i);
                purge();
            }
            while (rv != 1);
     
            do {
                printf("Saisissez la cote du %d%s cheval : ", i + 1, (i>0)?"eme":"er");
                fflush(stdout);
                rv = scanf("%f", *pos + i);
                purge();
            }
            while (rv != 1);
            }
    }
     
        void affichestandard(chevaux, *num[i], *pos[i]){
        int i;
        purge();
        for( i=0 ; i<chevaux ; i++ ){
            for( i=0 ; i<chevaux ; i++ ){
                puts(" _______________________");
                printf("| Cheval numero |   %d   |\n",*num[i]);
                printf("| Cote          |   %.1f |\n",*pos[i]);
                puts("|_______________|_______|\n");
            }
        }
        }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Quelles sont tes erreurs de compilation?
    Je n'ai pas de boule de cristal et je suis un gros flemmard...

  3. #3
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Pas de soucis

    J'ai fait un screen en pièce jointe.
    Je comprend l'erreur mais je ne sais pas comment la résoudre.
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    • nombre() est déclarée comme retournant un int, mais ne retourne rien du tout.
    • nombre() reçoit un int en entrée, mais ne lit pas sa valeur.
    • nombre() fait référence à la variable rv, qui n'est pas déclarée dans la fonction ni en global.
    • course() reçoit un int en entrée, mais n'en fait rien.
    • course() fait référence à la variable type, qui n'est pas déclarée dans la fonction ni en global.
    • Les paramètres de saisie() n'ont pas de type.
    • Les paramètres de affichestandard() n'ont pas de type non plus.
    • Il ne faut pas mettre le type des arguments lors de l'appel des fonctions: Seulement dans leur déclaration et définition.

  5. #5
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Pour compiler la prochaine fois fait :

    medinoc -WithPrettyOutput -o Main Main.c

  6. #6
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Je suis sous windows ... Et ayant un accès internet limité je ne peux pas aller recupérer un cygwin ou autre ..

  7. #7
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Sinon Médinoc il y a deux points ou je ne comprends pas ce que tu me dis :

    Citation Envoyé par Médinoc
    nombre() fait référence à la variable rv, qui n'est pas déclarée dans la fonction ni en global.
    course() fait référence à la variable type, qui n'est pas déclarée dans la fonction ni en global.
    Ils sont déclarés dans le main.

    En rectifiant les autres erreurs, lorsque je compile j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Compiling: main.c
    main.c: In function `main':
    main.c:54: error: invalid type argument of `unary *'
    main.c:54: error: invalid type argument of `unary *'
    Process terminated with status 1 (0 minutes, 1 seconds)
    2 errors, 0 warnings

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Je ne peux rien dire sur ces messages sans voir le code exact qui les génère.

  9. #9
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Voila le code modifié :

    Main.c :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    /*****************************************************************************/
    /*                                                                           */
    /*                              Main                                         */
    /*                                                                           */
    /*****************************************************************************/
     
    int main(void)
    {
        char type;
        int choix, i;
        int chevaux = 0;
        int rv = 0;
        int num[TAILLE_TAB] = {1};
        float pos[TAILLE_TAB] = {0.0};
     
        puts("|--------------------------------------------------------------------------|");
    	puts("|Bienvenue-----------------------------------------------------------------|");
    	puts("|Ce programme essaye de vous donner les meilleures chances de gagner au PMU|");
    	puts("|A l'aide de différentes combinaisons--------------------------------------|");
    	puts("|--------------------------------------------------------------------------|\n");
     
        nombre(chevaux);
        course(chevaux);
     
        puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	puts("\t 1-Resultat Favoris"); /* A venir */
    	puts("\t 2-Resultat Aleatoire"); /* A venir */
    	puts("\t 3-Verification saisie");
        puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	do  {
    	    printf("Saisissez votre choix : ");
    	   	choix=getchar();
        }
    	while(( choix<'1')||(choix>'2'));
     
    	switch(choix)
    	{
        	case '1':printf("favoris()");break;
        	case '2':printf("aleatoire()");break;
        	case '3':affichestandard(chevaux, *num[i], *pos[i]);break;
    	}
    	while(choix!='3');
     
        return 0;
    }
    fctpmu.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    /*****************************************************************************/
    /*                                                                           */
    /*                      Déclaration des fonctions                            */
    /*                                                                           */
    /*****************************************************************************/
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    void purge(void)
    {
    	int c;
    	while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
    void nombre(int chevaux)
    {
    	do
        {
            printf("* Combien de chevaux sont au depart ? (max. %d) : ", TAILLE_TAB);
            fflush(stdout);
            rv = scanf("%d", &chevaux);
            purge();
        }
        while (rv != 1 || chevaux < 0 || chevaux > TAILLE_TAB);
    }
     
    void course(int chevaux)
    {
        do {
    	puts("* De quel type de course s'agit-il ?");
    	puts("Pour une course au trot, saisir T; pour le galop, saisir G.");
    	scanf("%s", &type);}
    	while (((type!='t') && (type!='T')) && ((type!='g') && (type!='G')));
     
        if ((type=='t') || (type=='T')){
    	    printf("C'est une course au trot avec %d chevaux au depart.\n",chevaux);}
    	if ((type=='g') || (type=='G')){
    	    printf("C'est une course au galop avec %d chevaux au depart.\n",chevaux);}
    }
     
     
     
    void saisie(int rv, int chevaux,int *num[i],float *pos[i])
    {
        int i;
     
            for ( i = 0 ; i < chevaux ; i++ ) {
            do {
                printf("Saisissez le %d%s cheval : ", i + 1, (i>0)?"e":"er");
                fflush(stdout);
                rv = scanf("%d", *num + i);
                purge();
            }
            while (rv != 1);
     
            do {
                printf("Saisissez la cote du %d%s cheval : ", i + 1, (i>0)?"eme":"er");
                fflush(stdout);
                rv = scanf("%f", *pos + i);
                purge();
            }
            while (rv != 1);
            }
    }
     
        void affichestandard(int chevaux,int  *num[i],float *pos[i]){
        int i;
        purge();
        for( i=0 ; i<chevaux ; i++ ){
            for( i=0 ; i<chevaux ; i++ ){
                puts(" _______________________");
                printf("| Cheval numero |   %d   |\n",*num[i]);
                printf("| Cote          |   %.1f |\n",*pos[i]);
                puts("|_______________|_______|\n");
            }
        }
        }
    fctpmu.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*****************************************************************************/
    /*                                                                           */
    /*                         Définition des fonctions                          */
    /*                                                                           */
    /*****************************************************************************/
     
    void purge(void);
    void nombre(int);
    void course(int);
    void affichestandard(int, int *, float *);
    void saisie(int, int, int *, float *);
    Merci.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    • La fonction nombre() prend la variable chevaux en entrée, mais la modifie sans l'avoir lue avant. De plus, elle n'a aucun effet en sortie sur ladite variable, contrairement à ce que tu attends de cette fonction.
    • La fonction course() fait référence à la variable type, qui n'est déclarée ni dans la fonction ni en global.
    • Les types des deux derniers paramètres des fonctions saisie() et affichestandard() ne correspondent pas entre la déclaration et la définition. C'est de toute évidence la définition qui est incorrecte.
    • La fonction affichestandard() est mal indentée.
    • La fonction main() utilise un printf() non-terminé par \n, sans le suivre d'un fflush(stdout) : La chaîne n'est pas garantie être affichée sur toutes les plate-formes.
    • Les arguments passés à affichestandard() ne peuvent être évalués, car tu tentes des '*' sur des valeurs n'étant pas des pointeurs.
    • La ligne while(choix!='3'); ne complète aucun do. Elle correspond donc à une boucle vide, qui sera infinie si choix n'est pas égal à '3' quand on arrive dessus.

  11. #11
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par BeaV* Voir le message

    fctpmu.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    /*****************************************************************************/
    /*                                                                           */
    /*                      Déclaration des fonctions                            */
    /*                                                                           */
    /*****************************************************************************/
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    void purge(void)
    {
    	int c;
    	while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
    void nombre(int chevaux)
    {
    	do
        {
            printf("* Combien de chevaux sont au depart ? (max. %d) : ", TAILLE_TAB);
            fflush(stdout);
            rv = scanf("%d", &chevaux);
            purge();
        }
        while (rv != 1 || chevaux < 0 || chevaux > TAILLE_TAB);
    }
     
    void course(int chevaux)
    {
        do {
    	puts("* De quel type de course s'agit-il ?");
    	puts("Pour une course au trot, saisir T; pour le galop, saisir G.");
    	scanf("%s", &type);}
    	while (((type!='t') && (type!='T')) && ((type!='g') && (type!='G')));
     
        if ((type=='t') || (type=='T')){
    	    printf("C'est une course au trot avec %d chevaux au depart.\n",chevaux);}
    	if ((type=='g') || (type=='G')){
    	    printf("C'est une course au galop avec %d chevaux au depart.\n",chevaux);}
    }
     
     
     
    void saisie(int rv, int chevaux,int *num[i],float *pos[i])
    {
        int i;
     
            for ( i = 0 ; i < chevaux ; i++ ) {
            do {
                printf("Saisissez le %d%s cheval : ", i + 1, (i>0)?"e":"er");
                fflush(stdout);
                rv = scanf("%d", *num + i);
                purge();
            }
            while (rv != 1);
     
            do {
                printf("Saisissez la cote du %d%s cheval : ", i + 1, (i>0)?"eme":"er");
                fflush(stdout);
                rv = scanf("%f", *pos + i);
                purge();
            }
            while (rv != 1);
            }
    }
     
        void affichestandard(int chevaux,int  *num[i],float *pos[i]){
        int i;
        purge();
        for( i=0 ; i<chevaux ; i++ ){
            for( i=0 ; i<chevaux ; i++ ){
                puts(" _______________________");
                printf("| Cheval numero |   %d   |\n",*num[i]);
                printf("| Cote          |   %.1f |\n",*pos[i]);
                puts("|_______________|_______|\n");
            }
        }
        }
    fctpmu.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*****************************************************************************/
    /*                                                                           */
    /*                         Définition des fonctions                          */
    /*                                                                           */
    /*****************************************************************************/
     
    void purge(void);
    void nombre(int);
    void course(int);
    void affichestandard(int, int *, float *);
    void saisie(int, int, int *, float *);
    Merci.
    Tu confonds déclaration et définition des fonctions

    Thierry

  12. #12
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    J'ai modifié mais là je suis vraiment perdu voici mes erreurs ... :

    fctpmu.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    /*****************************************************************************/
    /*                                                                           */
    /*                       Définition des fonctions                            */
    /*                                                                           */
    /*****************************************************************************/
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
        int chevaux = 0;
        int rv = 0;
        char type;
        int i;
        int num[TAILLE_TAB] = {1};
        float pos[TAILLE_TAB] = {0.0};
     
    void purge(void)
    {
    	int c;
    	while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
    void nombre( chevaux)
    {
    	do
        {
            printf("* Combien de chevaux sont au depart ? (max. %d) : ", TAILLE_TAB);
            fflush(stdout);
            rv = scanf("%d", &chevaux);
            purge();
        }
        while (rv != 1 || chevaux < 0 || chevaux > TAILLE_TAB);
    }
     
    void course(chevaux)
    {
        do {
    	puts("* De quel type de course s'agit-il ?");
    	puts("Pour une course au trot, saisir T; pour le galop, saisir G.");
    	scanf("%s", &type);}
    	while (((type!='t') && (type!='T')) && ((type!='g') && (type!='G')));
     
        if ((type=='t') || (type=='T')){
    	    printf("C'est une course au trot avec %d chevaux au depart.\n",chevaux);}
    	if ((type=='g') || (type=='G')){
    	    printf("C'est une course au galop avec %d chevaux au depart.\n",chevaux);}
    }
     
     
     
    void saisie(rv, chevaux, num[i], pos[i])
    {
            for ( i = 0 ; i < chevaux ; i++ ) {
            do {
                printf("Saisissez le %d%s cheval : ", i + 1, (i>0)?"e":"er");
                fflush(stdout);
                rv = scanf("%d", num + i);
                purge();
            }
            while (rv != 1);
     
            do {
                printf("Saisissez la cote du %d%s cheval : ", i + 1, (i>0)?"eme":"er");
                fflush(stdout);
                rv = scanf("%f", pos + i);
                purge();
            }
            while (rv != 1);
            }
    }
     
        void affichestandard(chevaux, num[i], pos[i]){
        int i;
        purge();
        for( i=0 ; i<chevaux ; i++ ){
            for( i=0 ; i<chevaux ; i++ ){
                puts(" _______________________");
                printf("| Cheval numero |   %d   |\n",num[i]);
                printf("| Cote          |   %.1f |\n",pos[i]);
                puts("|_______________|_______|\n");
            }
        }
        }
    fctpmu.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*****************************************************************************/
    /*                                                                           */
    /*                         Déclaration des fonctions                         */
    /*                                                                           */
    /*****************************************************************************/
     
    void purge(void);
    void nombre(int);
    void course(int);
    void affichestandard(int, int, float);
    void saisie(int, int, int, float);
    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    /*****************************************************************************/
    /*                                                                           */
    /*                              Main                                         */
    /*                                                                           */
    /*****************************************************************************/
     
    int main(void)
    {
        char type;
        int choix, i;
        int chevaux = 0;
        int rv = 0;
        int num[TAILLE_TAB] = {1};
        float pos[TAILLE_TAB] = {0.0};
     
        puts("|--------------------------------------------------------------------------|");
    	puts("|Bienvenue-----------------------------------------------------------------|");
    	puts("|Ce programme essaye de vous donner les meilleures chances de gagner au PMU|");
    	puts("|A l'aide de différentes combinaisons--------------------------------------|");
    	puts("|--------------------------------------------------------------------------|\n");
     
        nombre(chevaux);
        course(chevaux);
     
        puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	puts("\t 1-Resultat Favoris"); /* A venir */
    	puts("\t 2-Resultat Aleatoire"); /* A venir */
    	puts("\t 3-Verification saisie");
        puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	do  {
    	    printf("Saisissez votre choix : \n");
    	    fflush(stdout);
    	   	choix=getchar();
        }
    	while(( choix<'1')||(choix>'2'));
     
        do {
    	switch(choix)
    	{
        	case '1':printf("favoris()");break;
        	case '2':printf("aleatoire()");break;
        	case '3':affichestandard(chevaux, num[i], pos[i]);break;
    	}}
    	while(choix!='3');
     
        return 0;
    }
    Et voici mes erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Compiling: main.c
    Compiling: fctpmu.c
    fctpmu.c:53: error: syntax error before '[' token
    fctpmu.c: In function `saisie':
    fctpmu.c:54: error: number of arguments doesn't match prototype
    fctpmu.h:11: error: prototype declaration
    fctpmu.c: At top level:
    fctpmu.c:74: error: syntax error before '[' token
    fctpmu.c: In function `affichestandard':
    fctpmu.c:74: error: number of arguments doesn't match prototype
    fctpmu.h:10: error: prototype declaration
    Process terminated with status 1 (0 minutes, 0 seconds)
    6 errors, 0 warnings

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Tu es bon pour annuler ces modifications, le remède est pire que le mal.

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ton code plus ou moins corrigé:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*****************************************************************************/
    /*                                                                           */
    /*                         Déclaration des fonctions                         */
    /*                                                                           */
    /*****************************************************************************/
     
    void purge(void);
    void nombre(int *);
    void course(int, char *);
    void affichestandard(int, int const *, float const*);
    void saisie(int, int *, float *);
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    /*****************************************************************************/
    /*                                                                           */
    /*                      Définition des fonctions                             */
    /*                                                                           */
    /*****************************************************************************/
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #include <assert.h>
    #define TAILLE_TAB 30
     
    void purge(void)
    {
    	int c;
    	/* mange le tampon */
    	while ((c = getchar()) != '\n' && c != EOF) {}
    }
     
    void nombre(int *pChevaux)
    {
    	int chevaux, rv;
     
    	assert(pChevaux != NULL);
    	do {
    		printf("* Combien de chevaux sont au depart ? (max. %d) : ", TAILLE_TAB);
    		fflush(stdout);
    		rv = scanf("%d", &chevaux);
    		purge();
    	} while (rv != 1 || chevaux < 0 || chevaux > TAILLE_TAB);
    	*pChevaux = chevaux;
    }
     
    void course(int chevaux, char *pType)
    {
    	char type;
     
    	assert(pType != NULL);
    	do {
    		puts("* De quel type de course s'agit-il ?");
    		puts("Pour une course au trot, saisir T; pour le galop, saisir G.");
    		scanf("%c", &type); /* Un seul caractère à saisir */
    		purge();
    	} while (((type!='t') && (type!='T')) && ((type!='g') && (type!='G')));
     
    	if ((type=='t') || (type=='T')) {
    		printf("C'est une course au trot avec %d chevaux au depart.\n",chevaux);
    	}
    	if ((type=='g') || (type=='G')) {
    		printf("C'est une course au galop avec %d chevaux au depart.\n",chevaux);
    	}
    	*pType = type;
    }
     
     
    void saisie(int chevaux, int *num, float *pos)
    {
    	int i;
     
    	for ( i = 0 ; i < chevaux ; i++ ) {
    		int rv;
    		do {
    			printf("Saisissez le %d%s cheval : ", i + 1, ((i>0)?"e":"er"));
    			fflush(stdout);
    			rv = scanf("%d", &num[i]);
    			purge();
    		} while (rv != 1);
     
    		do {
    			printf("Saisissez la cote du %d%s cheval : ", i + 1, ((i>0)?"eme":"er"));
    			fflush(stdout);
    			rv = scanf("%f", &pos[i]);
    			purge();
    		} while (rv != 1);
    	}
    }
     
    void affichestandard(int chevaux, int const *num, float const *pos)
    {
    	int i;
    	for( i=0 ; i<chevaux ; i++ ) {
    		for( i=0 ; i<chevaux ; i++ ) {
    			puts(" _______________________");
    			printf("| Cheval numero |   %d   |\n", num[i]);
    			printf("| Cote          |   %.1f |\n", pos[i]);
    			puts("|_______________|_______|\n");
    		}
    	}
    }
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    /* Source de BeaV* sur developpez.net */
    #include <stdio.h>
    #include <stdlib.h>
    #include "fctpmu.h"
    #define TAILLE_TAB 30
     
    /*****************************************************************************/
    /*                                                                           */
    /*                              Main                                         */
    /*                                                                           */
    /*****************************************************************************/
     
    int main(void)
    {
    	char type;
    	int choix;
    	int chevaux = 0;
    	int num[TAILLE_TAB] = {1};
    	float pos[TAILLE_TAB] = {0.0};
     
    	puts("|--------------------------------------------------------------------------|");
    	puts("|Bienvenue-----------------------------------------------------------------|");
    	puts("|Ce programme essaye de vous donner les meilleures chances de gagner au PMU|");
    	puts("|A l'aide de différentes combinaisons--------------------------------------|");
    	puts("|--------------------------------------------------------------------------|\n");
     
    	nombre(&chevaux);
    	course(chevaux, &type);
    	/* Ajouter un test pour vérifier que chevaux n'est pas supérieur à TAILLE_TAB */
     
    	puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	puts("\t 1-Resultat Favoris"); /* A venir */
    	puts("\t 2-Resultat Aleatoire"); /* A venir */
    	puts("\t 3-Verification saisie");
    	puts("\t ----------------------------");
    	puts("\t|      -|    Menu    |-      |");
    	puts("\t ----------------------------");
    	do  {
    		printf("Saisissez votre choix : ");
    		fflush(stdout);
    		choix=getchar();
    		purge();
    	} while(( choix<'1')||(choix>'3'));
     
    	switch(choix)
    	{
    	case '1':
    		printf("favoris()");
    		break;
    	case '2':
    		printf("aleatoire()");
    		break;
    	case '3':
    		affichestandard(chevaux, num, pos);
    		break;
    	}
     
    	return 0;
    }

  15. #15
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Merci pour la correction, je vais analyser tes modifications et en prendre de la graine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/09/2011, 17h25
  2. Réponses: 8
    Dernier message: 04/03/2008, 23h30
  3. Compilation petit Programme.
    Par zicos dans le forum C
    Réponses: 13
    Dernier message: 21/05/2007, 15h55
  4. Delphi 2005 : Erreur de compilation du programme
    Par bigbestboy dans le forum Langage
    Réponses: 6
    Dernier message: 03/08/2005, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo