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 chevronné 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
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Quelles sont tes erreurs de compilation?
    Je n'ai pas de boule de cristal et je suis un gros flemmard...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre chevronné 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
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre émérite 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
    Par défaut
    Pour compiler la prochaine fois fait :

    medinoc -WithPrettyOutput -o Main Main.c

  6. #6
    Membre chevronné 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
    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 chevronné 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
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je ne peux rien dire sur ces messages sans voir le code exact qui les génère.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre chevronné 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
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    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
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  12. #12
    Membre chevronné 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
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu es bon pour annuler ces modifications, le remède est pire que le mal.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre chevronné 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
    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