Programmation C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Programmation C



  1. #1
    inviteba67e777

    Question Programmation C


    ------

    Hello

    J'ai 2 erreurs lors de la compilation de mon fichier.c :

    conflicting type for 'mafonction'
    previous implicite declaration of 'mafonction'

    J'ai aussi 1 warning qui se répète :

    data definition has no type or storage class

    A quoi dois je faire attention pour repérer l'erreur ?

    J'ai essayé de joindre le fichier en pièce jointe, mais il y a une erreur car le fichier n'est pas valide... ?? Je vous le colle :

    #include<stdio.h>

    char grille[6][7], a, choix;
    int w;// si w=o -> pas de gagnant et la partie continue ; si w=-1 -> il y a un gagnant et la partie s'arrête
    int y;// si y=o -> la grille n'est pas pleine et la partie continue; si y=1 -> la grille est pleine partie s'arrête
    int u; // nombre de partie gagné pas joueur 1
    int d; // nombre de partie gagné pas joueur 2
    int p;//nombre de partie jouée
    int x; //colonne sélectionée
    y=0;u=0;d=0;p=0;w=0;




    void initialiser()// on met du blanc dans la grille
    {
    int i,j;



    for(i=0 ; i<6 ; i++)
    {
    for(j=0 ; j<7 ; j++)
    {
    grille[i][j]=' ';
    }
    }

    }




    void afficher()// on affiche la grille avec une mise en page et tous les commentaires
    {
    int i,j;
    int b;

    for(i=0 ; i<6 ; i++)
    {
    printf("----------------------\n");
    for(j=0 ; j<7 ; j++)
    {
    printf("| ");
    printf("%c",grille[i][j]);
    }
    printf("| %i",i+1);
    printf("\n");
    }
    printf("----------------------\n");
    printf(" 1 2 3 4 5 6 7\n");
    printf("\nJoueur 1 : X\nJoueur 2 : O\n\n");


    if(y!=0 && w!=-1)// on verifie que la grille est pleine et qu'il n'y a pas de gagnant
    {
    printf("\nLa grille est pleine, match nul\n\n");
    }

    if(w==-1)// on vérifie si un joueur a gagné
    {
    if(a=='X')
    {
    b=1;
    u++;
    }
    else
    {
    b=2;
    d++;
    }
    printf("\n BRAVO !!!\n\n-------------------------\n| Le joueur %i a gagné ! |\n-------------------------\n\n",b);
    y=1;
    }

    }

    void placer(int x)// on place le jeton d'un joueur
    {
    int i,j;

    i=x+1;
    printf("\nVous avez choisi la colonne numéro %i.\n",i);

    while(x<0 || x>6)
    {
    printf("\n\nChoisissez une colonne qui existe !");
    scanf("%i",&x);x--;
    i=x+1;
    if(x>0 || x<6)
    {
    printf("\nVous avez choisi la colonne numéro %i.\n",i);
    }
    }

    while(grille[0][x] == 'X' || grille[0][x] == 'O')
    {
    printf("\n\nCette colonne est pleine, choisissez une autre colonne !");
    scanf("%i",&x);x--;
    i=x+1;
    if(x>0 || x<6)
    {
    printf("\nVous avez choisi la colonne numéro %i.\n",i);
    }
    }

    i=5;
    while(grille[i][x] != ' ')
    {
    i--;
    }
    grille[i][x]=a;

    gagnant(i,x);// on vérifie si quelque'un a gagné
    verifpleine();// on vérifie si la grille est vide

    }

    int verifpleine()// on vérifie si la grille est vide
    {
    int i,j;
    j=0;
    for(i=0 ; i<7 ; i++)
    {
    if(grille[0][i]=='O' || grille[0][i]=='X')
    {
    j++;
    }
    }
    if(j==7 || x==-1)
    {
    y=1;
    return(0);
    }
    }

    void gagnant(int l, int c)// on vérifie si quelque'un a gagné
    {
    int k;
    int n;
    int j;
    char b;
    n=0;

    for(k=l+1 ; k<6 ; k++) //vérification sur la verticale bas
    {
    if(grille[k][c]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }

    if(n==3) //on voit si le joueur a gagné sur la verticale
    {
    w=-1;
    }

    n=0;
    for(k=c-1 ; k>-1 ; k--) //vérification sur l'horizontale gauche
    {
    if(grille[l][k]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }


    for(k=c+1 ; k<7 ; k++) //vérification sur l'horizontale droite
    {
    if(grille[l][k]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }

    if(n==3) //on voit si le joueur a gagné sur l'horizontale
    {
    w=-1;
    }

    n=0;j=l;
    for(k=c+1 ; k<7 ; k++) //vérification sur la diagonale haut droite
    {
    j--;

    if(grille[j][k]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }


    j=l;
    for(k=c-1 ; k>-1 ; k--) //vérification sur la diagonale bas gauche
    {
    j++;

    if(grille[j][k]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }

    if(n==3) //on voit si le joueur a gagné
    {
    w=-1;
    }

    n=0;j=l;
    for(k=c-1 ; k>-1 ; k--) //vérification sur la diagonale haut gauche
    {
    j--;

    if(grille[j][k]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }


    j=l;
    for(k=c+1 ; k<7 ; k++) //vérification sur la diagonale bas droit
    {
    j++;

    if(grille[j][k]==a)
    {
    n++;
    }
    else
    {
    break;
    }
    }

    if(n==3) //on voit si le joueur a gagné
    {
    w=-1;
    }
    }


    int menu()
    {
    if(p!=0)
    {
    printf("\n-----------------------------------");
    printf("\nStatistiques :\n");
    printf("\nNombre de partie jouée : %i\n",p);
    printf("\nLe joueur 1 a gagné %i partie(s).\n",u);
    printf("\nLe joueur 2 a gagné %i partie(s).\n",d);
    printf("-----------------------------------\n\n");
    }
    p++;
    while(choix!='O' && choix!='N')
    {
    printf("\nVoulez vous faire une partie ? O/N ");scanf("%c",&choix);
    if(choix!='O' && choix!='N')
    {
    printf("\nRépondez par O ou N.");scanf("%c",&choix);
    }
    }
    if(choix=='N')
    {
    return(0);
    }
    else
    {
    initialiser();
    afficher();
    printf("\n\nChaque joueur donnera le numéro de la colonne dans lequel il choisira d'insérer son jeton.\n\n");
    while(y==0)
    {
    a='X';
    printf("\n\nJoueur 1, quelle colonne choisissez vous ? ");
    scanf("%i",&x);x--;
    placer(x);

    afficher();
    if(y!=0)
    {
    break;
    }

    a='O';
    printf("\n\nJoueur 2, quelle colonne choisissez vous ? ");
    scanf("%i",&x);x--;
    placer(x);
    afficher();
    }
    }
    return(1);
    }




    int main()
    {
    y=0;
    printf("\n\n JEUX PUISSANCE 4\n\n");
    while(menu()==1)
    {
    y=0;w=0;
    choix='R';
    }
    printf("\n\nJ'espère que vous vous êtes bien amusé.\n\n AU REVOIR \n\n");
    return(0);
    }

    -----

  2. #2
    erik

    Re : Programmation C

    Salut,
    Il faut utiliser la balise [CODE] quand tu postes du code.

    Code:
    int y=0,u=0,d=0,p=0,w=0;
    Va te permettre de te débarrasser des warnings.

    L'erreur vient du fait que tu utilises des fonction dont tu n'a pas déclaré le prototype (par exemple la fonction gagnant est utilisée avant d'être définie).
    Rajoute les prototypes de tes fonctions :
    Code:
    void gagnant (int,int);
    .... en début de fichier

  3. #3
    inviteba67e777

    Re : Programmation C

    Aaah merci beaucoup ! (sous Linux, le vrai, c'est toléré alors)

    Mais maintenant que j'ai compilé... je n'arrive pas à exécuter.

    Je compile : gcc -o Puissance42.c jeu
    J'exécute : ./jeu


    Mais j'obtiens le message suivant :

    ./jeu: ./jeu: cannot execute binary file

  4. #4
    zoup1

    Re : Programmation C

    Code:
    #include<stdio.h>
     
    char grille[6][7], a, choix;
    int w;// si w=o -> pas de gagnant et la partie continue ; si w=-1 -> il y a un gagnant et la partie s'arrête
    int y;// si y=o -> la grille n'est pas pleine et la partie continue; si y=1 -> la grille est pleine partie s'arrête
    int u; // nombre de partie gagné pas joueur 1
    int d; // nombre de partie gagné pas joueur 2
    int p;//nombre de partie jouée
    int x; //colonne sélectionée
    y=0;u=0;d=0;p=0;w=0;
     
     
     
     
    void initialiser()// on met du blanc dans la grille
    {
    int i,j;
     
     
     
    for(i=0 ; i<6 ; i++)
        {
        for(j=0 ; j<7 ; j++)
            {
            grille[i][j]=' ';
            }
        }
     
    }
     
     
     
     
    void afficher()// on affiche la grille avec une mise en page et tous les commentaires
    {
    int i,j;
    int b;
     
    for(i=0 ; i<6 ; i++)
        {
        printf("----------------------\n");
        for(j=0 ; j<7 ; j++)
            {
            printf("| ");
            printf("%c",grille[i][j]);
            }
        printf("| %i",i+1);
        printf("\n");
        }
    printf("----------------------\n");
    printf(" 1  2  3  4  5  6  7\n");
    printf("\nJoueur 1 : X\nJoueur 2 : O\n\n");
     
     
    if(y!=0 && w!=-1)// on verifie que la grille est pleine et qu'il n'y a pas de gagnant
        {
        printf("\nLa grille est pleine, match nul\n\n");
        }
     
    if(w==-1)// on vérifie si un joueur a gagné
        {
        if(a=='X')
            {
            b=1;
            u++;
            }
        else
            {
            b=2;
            d++;
            }
        printf("\n       BRAVO !!!\n\n-------------------------\n| Le joueur %i a gagné ! |\n-------------------------\n\n",b);
        y=1;
        }
     
    }
     
    void placer(int x)// on place le jeton d'un joueur
    {
    int i,j;
     
    i=x+1;
    printf("\nVous avez choisi la colonne numéro %i.\n",i);
     
    while(x<0 || x>6)
        {
        printf("\n\nChoisissez une colonne qui existe !");
        scanf("%i",&x);x--;
        i=x+1;
        if(x>0 || x<6)
            {
            printf("\nVous avez choisi la colonne numéro %i.\n",i);
            }
        }
     
    while(grille[0][x] == 'X' || grille[0][x] == 'O')
        {
        printf("\n\nCette colonne est pleine, choisissez une autre colonne !");
        scanf("%i",&x);x--;
        i=x+1;
        if(x>0 || x<6)
            {
            printf("\nVous avez choisi la colonne numéro %i.\n",i);
            }
        }
     
    i=5;
    while(grille[i][x] != ' ')
        {
        i--;
        }
    grille[i][x]=a;
     
    gagnant(i,x);// on vérifie si quelque'un a gagné
    verifpleine();// on vérifie si la grille est vide
     
    }
     
    int verifpleine()// on vérifie si la grille est vide
    {
    int i,j;
    j=0;
    for(i=0 ; i<7 ; i++)
        {
        if(grille[0][i]=='O' || grille[0][i]=='X')
            {
            j++;
            }
        }
    if(j==7 || x==-1)
        {
        y=1;
        return(0);
        }
    }
     
    void gagnant(int l, int c)// on vérifie si quelque'un a gagné
    {
    int k;
    int n;
    int j;
    char b;
    n=0;
     
    for(k=l+1 ; k<6 ; k++) //vérification sur la verticale bas
        {
        if(grille[k][c]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
    if(n==3) //on voit si le joueur a gagné sur la verticale
        {
        w=-1;
        }
     
    n=0;
    for(k=c-1 ; k>-1 ; k--) //vérification sur l'horizontale gauche
        {
        if(grille[l][k]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
     
    for(k=c+1 ; k<7 ; k++) //vérification sur l'horizontale droite
        {
        if(grille[l][k]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
    if(n==3) //on voit si le joueur a gagné sur l'horizontale
        {
        w=-1;
        }
     
    n=0;j=l;
    for(k=c+1 ; k<7 ; k++) //vérification sur la diagonale haut droite
        {
        j--;
        
        if(grille[j][k]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
     
    j=l;
    for(k=c-1 ; k>-1 ; k--) //vérification sur la diagonale bas gauche
        {
        j++;
        
        if(grille[j][k]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
    if(n==3) //on voit si le joueur a gagné
        {
        w=-1;
        }
     
    n=0;j=l;
    for(k=c-1 ; k>-1 ; k--) //vérification sur la diagonale haut gauche
        {
        j--;
        
        if(grille[j][k]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
     
    j=l;
    for(k=c+1 ; k<7 ; k++) //vérification sur la diagonale bas droit
        {
        j++;
        
        if(grille[j][k]==a)
            {
            n++;
            }
        else
            {
            break;
            }
        }
     
    if(n==3) //on voit si le joueur a gagné
        {
        w=-1;
        }
    }
     
     
    int menu()
    {
            if(p!=0)
            {
            printf("\n-----------------------------------");
            printf("\nStatistiques :\n");
            printf("\nNombre de partie jouée : %i\n",p);
            printf("\nLe joueur 1 a gagné %i partie(s).\n",u);
            printf("\nLe joueur 2 a gagné %i partie(s).\n",d);
            printf("-----------------------------------\n\n");
            }
        p++;
        while(choix!='O' && choix!='N')
            {
            printf("\nVoulez vous faire une partie ? O/N  ");scanf("%c",&choix);
            if(choix!='O' && choix!='N')
                {
                printf("\nRépondez par O ou N.");scanf("%c",&choix);
                }
            }
        if(choix=='N')
            {
            return(0);
            }
        else
            {
            initialiser();
            afficher();
            printf("\n\nChaque joueur donnera le numéro de la colonne dans lequel il choisira d'insérer son jeton.\n\n");
            while(y==0)
                {
                a='X';
                printf("\n\nJoueur 1, quelle colonne choisissez vous ? ");
                scanf("%i",&x);x--;
                placer(x);
        
                afficher();
                if(y!=0)
                    {
                    break;
                    }
            
                a='O';
                printf("\n\nJoueur 2, quelle colonne choisissez vous ? ");
                scanf("%i",&x);x--;
                placer(x);
                afficher();
                }
            }
        return(1);    
    }
     
     
     
     
    int main()
    {
    y=0;
    printf("\n\n                JEUX PUISSANCE 4\n\n");
    while(menu()==1)
        {
        y=0;w=0;
        choix='R';
        }
    printf("\n\nJ'espère que vous vous êtes bien amusé.\n\n             AU REVOIR ;)\n\n");
    return(0);
    }
    Il faut absolument mettre le code entre des balises code pour que cela soit lisible sur le forum

    pour le implicite déclaration, c'est parce que tu utilises ta fonction avant de l'avoir définie (en l'implémentant).
    Ce n'est pas une erreur mais seulement un avertissement.

    si tu veux supprimer ce warning; il suffit de déclarer la fonction (sans nécessairement l'implémenter} avant de l'utiliser en ajoutant sa déclaration au début du programme (voir éventuellement dans un fichier header .h)

    void gagnant(int l, int c);


    en ce qui concerne les warnings, tu n'as pas le droit de faire une affectation dans cette partie du code (ligne 10) qui est purement déclarative.
    Tes variables doivent être initialisée par exemple dans la fonction main() ou alors au moment de leur déclaration
    exemple : int x=0;
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  5. A voir en vidéo sur Futura
  6. #5
    zoup1

    Re : Programmation C

    Citation Envoyé par Toni Voir le message
    Aaah merci beaucoup ! (sous Linux, le vrai, c'est toléré alors)

    Mais maintenant que j'ai compilé... je n'arrive pas à exécuter.

    Je compile : gcc -o Puissance42.c jeu
    J'exécute : ./jeu


    Mais j'obtiens le message suivant :

    ./jeu: ./jeu: cannot execute binary file

    Il faut compiler avec : gcc Puissance42.c -o jeu

    l'option -o permet de spécifier le nom du fichier de sortie (celui de l'éxecutable généralement)
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  7. #6
    inviteba67e777

    Re : Programmation C

    J'ai testé avec ta façon de compiler mais alors, ce qui arrive est qu'il apparait plein de warning et d'erreurs, jusqu'à la ligne 1703 alors que j'en ai pas autant...

    j'ai bien tapé : gcc Puissance42.c -o jeu

    Je rappelle que je viens d'installer Cygwin sur Windows Vista Premium et j'ai intaller gcc, gdb et make du dossier Devel. Je découvre (là je n'ai pas accès à Linux donc je cherche une alternative).

  8. #7
    zoup1

    Re : Programmation C

    Es tu bien sur que Puissance42.c contient toujours le programme que tu cherches à compiler ? J'ai un peu peur que ta précédente commande (avec -o Puissance42.c) n'ai remplacé celui ci par un code executable...
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

  9. #8
    MaliciaR

    Re : Programmation C

    Citation Envoyé par Toni Voir le message
    Je rappelle que je viens d'installer Cygwin sur Windows Vista Premium et j'ai intaller gcc, gdb et make du dossier Devel. Je découvre (là je n'ai pas accès à Linux donc je cherche une alternative).
    Euh, tu as gdb et tu n'as pas essayé de débugguer avec?
    Pour ton histoire d'alternative : un dual-boot?
    An expert is one who knows more and more about less and less.

  10. #9
    zoup1

    Re : Programmation C

    IL y a un truc qui marche vraiment bien, et s'améliore en permanence :
    VirtualBox qui te permet de faire tourner une machine virtuelle avec le système d'exploitation de ton choix.
    Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.

Discussions similaires

  1. programmation TI 84 plus
    Par invite9f855684 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/04/2008, 15h45
  2. Programmation TI-84 PLUS
    Par invite95dac8e5 dans le forum Électronique
    Réponses: 1
    Dernier message: 16/04/2008, 02h15
  3. Programmation C
    Par invite34aea5f7 dans le forum Électronique
    Réponses: 21
    Dernier message: 22/03/2008, 00h19
  4. programmation CAN
    Par invite48a7b274 dans le forum Électronique
    Réponses: 1
    Dernier message: 04/02/2008, 10h51
  5. Programmation 3D
    Par invite769675d7 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 01/11/2005, 06h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.