Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice Partie 2, 6)

J'ai voulu en faire un peu + que l'exercice, mais il y a une erreur...

Sujet résolu
    24 juillet 2006 à 20:08:49

    J'ai déjà posé la question, mais ce n'était pas dans le bon post.

    Alors voilà, je voulais faire en sorte que le tableau soit "interactif", je veux dire par là qu'on choisi combien de joueurs on est.

    Voici donc mon code :

    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"

    int main(int argc, char *argv[])
    {
       long nombreJoueur = 0;

       printf("combien de joueur?");
       scanf("%ld", &nombreJoueur);

      struct personne joueur[nombreJoueur];

      long i;
      char nom[100];
      char prenom[100];
      long age = 0;
      int sexe = 0;

      for (i = 0 ; i < nombreJoueur ; i++)
      {
          printf("Peux tu me renseigner sur ton prenom ?");
          scanf("%s", joueur[i].nom);
          printf("Et quel est ton pseudo ?");
          scanf("%s", joueur[i].prenom);
          printf("Quel age as tu ?");
          scanf("%ld", &joueur[i].age);
          printf("Tape 1 si tu es un garcon ou 0 si tu es une fille :");
          scanf("%d", &joueur[i].sexe);
          printf("\n\n");
      }

      for (i = 0 ; i < nombreJoueur ; i++)
      {
    printf("\t\t -----Recapitulation-----\n\n");
      printf("\t Joueur 1 :\n");
      printf("Prenom : %s\n", joueur[i].prenom);
      printf("Nom : %s\n", joueur[i].nom);
      printf("Age : %ld\n", joueur[i].age);
      printf("Sexe : %d\n", joueur[i].sexe);
      }

      system("PAUSE");
      return 0;
    }


    Et le main.h est le même que dans le tuto.


    Et mes 2 problèmes :

    1) Je ne trouve pas comment empécher cette erreur :
    main.c - ligne 10 - "warning : passing arg of 'joueur' isn't know"

    2) Pourquoi, malgrès le fait que j'ai mis typedef struct Personne Personne; dans mon main.h, si je ne met pas struct dans mon main.c il me dit en erreur Error, 'personne' undeclared identifier is reporter only once ?



    Merci :euh:
    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2006 à 20:45:58

      EDIT: Peut-être la majuscule je pense, faut faire attention!!!, oui, je confirme, attention aux majuscules, mais ya un autre pb now.
      Autre pb résolu, ds le main.h de m@teo, la variable n'est pas sexe, mais garçon, dc tu remplaces garçon par sexe, et ça marche du feu de dieu de la mort qui tue o_Oo_O:p .



      @+ :soleil:
      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2006 à 22:27:32

        Ah bein oui c'était un simple problème de majuscule...
        Quant à garçon, en fait voici mon main.h :
        typedef struct Personne Personne;
        struct Personne
        {
            char nom[100];
            char prenom[100];
            char adresse[1000];

            long age;
            int sexe; // Booléen : 1 = garçon, 0 = fille
        };


        Donc maintenant, plus d'erreur ni de warning...

        Sauf que, quand je lance l'exe, il me demande le nombre de joueurs (je met un chiffre)... Puis me dit d'appuyez sur une touche pour continuer (j'appuie sur une touche), puis Press enter to continue(j'appuie sur entrer), et ça quitte...

        Alors là, je suis perdu! lol o_O
        • Partager sur Facebook
        • Partager sur Twitter
          25 juillet 2006 à 2:59:33

          Ben en mettant

          struct Personne joueur[nombreJoueur];

          et
          joueur[i].variable

          ça marche...
          Mais il n'est pas conseillé de mettre une variable pour initialiser un tableau...
          • Partager sur Facebook
          • Partager sur Twitter
            25 juillet 2006 à 10:22:13

            Effectivement, ça marche.

            A part quelques petits problème...

            ->
            A la récapitulation, je ne trouve pas comment faire un printf du style joueur [i] (ça met logiquement joueur 1 pour chaque joueur avec mon code actuel).


            Et une petite question...

            Pourquoi suis-je quand même obligé de mettre struct Personne joueur[nombreJoueur]; alors que j'ai fait un typedef ( typedef struct Personne Personne; ) ?


            Et pour finir...

            Ca doit etre tout con, mais comment faire pour que dans le récapitulatif il écrive garçon ou fille à la place de 1 ou 0 ?



            Merci :)
            • Partager sur Facebook
            • Partager sur Twitter
              25 juillet 2006 à 10:29:57

              1.
              Personne joueurs[10]; // Tu as sûrment omis la majuscule P

              2.
              printf("Joueur %d :", i);
              //ou
              printf("Joueur[%d] :", i);
              //Avec i+1 si tu définit i à 0

              3.
              printf("Vous êtes %s", (joueurs[i].sexe == 1) ? "un garcon" : "une fille");
              //expression ternaire... un genre de if - else en une ligne
              • Partager sur Facebook
              • Partager sur Twitter
                25 juillet 2006 à 10:41:05

                1. Oui, je crois effectivement que j'avais quand même oublié la majuscule, car là j'ai reéessayé et ça marche :o

                2. Merci pour le printf, ça marche parfaitement, j'aurais du y penser! ^^

                3. En fait j'ai fait :
                  if (joueur[i].sexe == 0)
                  printf("Sexe : Fille\n");
                  else
                  printf("Sexe : Garçon\n");


                Et j'allais justement demander s'il n'y avait pas un moyen plus simple/court ! Donc merci beaucoup! :D



                Voilà, mon programme est enfin comme je voulais, merci pour votre aide à tous :)
                Je vais maintenant poursuivre ma lecture du tuto ^^

                a+
                • Partager sur Facebook
                • Partager sur Twitter

                Exercice Partie 2, 6)

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown