Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tableau moyenne

Valeur de la taille du tableau plutot que la formule mathématique

Sujet résolu
    28 août 2021 à 13:45:22

    C'est si compliqué que ça ?

    #define MAX 2
    
    int main(void) {
    	int i;
    	joueur info[MAX];
    
    	for (i = 0; i < MAX; i++) {
    		printf("nom joueur %d :\n", i+1);
    		scanf("%s", info[i].nom);
    		printf("prenom joueur %d :\n", i+1);
    		scanf("%s", info[i].prenom);
    	}
    
    	for (i = 0; i < MAX; i++)
    		printf("Info joueur %d : %s %s\n", i+1, info[i].nom, info[i].prenom);
    
    	return 0;
    }



    • Partager sur Facebook
    • Partager sur Twitter

    On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

      28 août 2021 à 13:56:35

      edgarjacobs a écrit:

      C'est si compliqué que ça ?

      #define MAX 2
      
      int main(void) {
      	int i;
      	joueur info[MAX];
      
      	for (i = 0; i < MAX; i++) {
      		printf("nom joueur %d :\n", i+1);
      		scanf("%s", info[i].nom);
      		printf("prenom joueur %d :\n", i+1);
      		scanf("%s", info[i].prenom);
      	}
      
      	for (i = 0; i < MAX; i++)
      		printf("Info joueur %d : %s %s\n", i+1, info[i].nom, info[i].prenom);
      
      	return 0;
      }



      Non assez simple  Par contre j'ai des problème pour la création de la fonction de réinitialisation

      -
      Edité par Torq 28 août 2021 à 14:08:22

      • Partager sur Facebook
      • Partager sur Twitter
        28 août 2021 à 15:56:34

        BilâlAdanur a écrit:

        edgarjacobs a écrit:

        C'est si compliqué que ça ?

        #define MAX 2
        
        int main(void) {
        	int i;
        	joueur info[MAX];
        
        	for (i = 0; i < MAX; i++) {
        		printf("nom joueur %d :\n", i+1);
        		scanf("%s", info[i].nom);
        		printf("prenom joueur %d :\n", i+1);
        		scanf("%s", info[i].prenom);
        	}
        
        	for (i = 0; i < MAX; i++)
        		printf("Info joueur %d : %s %s\n", i+1, info[i].nom, info[i].prenom);
        
        	return 0;
        }



        Non assez simple  Par contre j'ai des problème pour la création de la fonction de réinitialisation

        -
        Edité par BilâlAdanur il y a environ 1 heure


        Ah... car il y a une fonction de réinitialisation ? Qui sert à quoi ?
        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          28 août 2021 à 16:12:42

          edgarjacobs a écrit:

          Ah... car il y a une fonction de réinitialisation ? Qui sert à quoi ?

          " Initialiser une structure

          Pour les structures comme pour les variables, tableaux et pointeurs, il est vivement conseillé de les initialiser dès leur création pour éviter qu'elles ne contiennent « n'importe quoi ». En effet, je vous le rappelle, une variable qui est créée prend la valeur de ce qui se trouve en mémoire là où elle a été placée. "

          Du coup j'ai fais :

          int main()
          {
              int i = 0;
          
              Joueur reset;
              init(&reset);
          
              Joueur info[MAX];
          
              printf("Tableau 1 :\n");
              for (i = 0; i < MAX ; i++)
              {
                  printf("%s \n", info[i].nom);
              }
          
              printf("Tableau 2 :\n");
              for (i = 0; i < MAX; i ++)
              {
                  printf("%s \n", info[i].prenom);
              }
          
              for (i = 0; i < MAX; i++)
              {
                  printf("nom joueur %d :\n", i+1);
                  scanf("%s", info[i].nom);
                  printf("prenom joueur %d :\n", i+1);
                  scanf("%s", info[i].prenom);
              }
          
              for (i = 0; i < MAX; i++)
              {
                  printf("Info joueur %d : %s %s\n",i+1, info[i].nom, info[i].prenom);
              }
          
              return 0;
          }
          void init(Joueur *reset)
          {
              reset->nom[100] = 0;
              reset->prenom[100] = 0;
          }

          Mais j'ai l'impression que sa ne réinitialise pas car dans les printf je vois n'importe quoi. Même si ici la fonction ne sert à rien je souhaite comprendre pour la suite, car je pense que sa pourrai être utile ?




          • Partager sur Facebook
          • Partager sur Twitter
            28 août 2021 à 16:22:17

                reset->nom[100] = 0;

            Alors ici tu mets la case 100 du tableau à 0 or cette case ne fait pas partie du tableau puisque les case vont de 0 à 99 !

            En fait pour mettre toutes les cases à 0 tu dois le faire une par une avec une boucle ou utiliser des fonctions comme memset. (Dans le cas de ton code, ce n'est pas utile de les mettre à 0).

            Une autre possibilité est de le faire des la déclaration du tableau :

                Joueur reset = {{0}, {0}};



            -
            Edité par rouIoude 28 août 2021 à 16:28:59

            • Partager sur Facebook
            • Partager sur Twitter
            ...
              28 août 2021 à 16:31:59

              rouIoude a écrit:

                  reset->nom[100] = 0;

              Alors ici tu mets la case 100 du tableau à 0 or cette case ne fait pas partie du tableau puisque les case vont de 0 à 99 !


              Oui !!! Je me suis embrouillé le cerveau je commençais même à désespérer, du coup j'ai changé j'ai fais ça et c'est bon :

              #define STRUCT_CASE 100
              void init(Joueur *reset)
              {
                  int i = 0;
              
                  for (i = 0; i < STRUCT_CASE; i++)
                  {
                  reset->nom[i] = 0;
                  reset->prenom[i] = 0;
                  }
              }

              rouIoude a écrit:

                  reset->nom[100] = 0;

              Alors ici tu mets la case 100 du tableau à 0 or cette case ne fait pas partie du tableau puisque les case vont de 0 à 99 !

              En fait pour mettre toutes les cases à 0 tu dois le faire une par une avec une boucle ou utiliser des fonctions comme memset. (Dans le cas de ton code, ce n'est pas utile de les mettre à 0).

              Je ne connais pas encore memset

              Une autre possibilité est de le faire des la déclaration du tableau :

                  Joueur reset = {{0}, {0}};
              Merci beaucoup pour l'info, depuis le début d'après-midi je suis dessus alors que c'est exactement comme les tableaux, c'est pas compliqué du tout...
              Même si c'est pas utile je préfère comprendre sinon sa n'aura aucun intérêt

              -
              Edité par Torq 28 août 2021 à 18:04:19

              • Partager sur Facebook
              • Partager sur Twitter
                28 août 2021 à 17:31:26

                BilâlAdanur a écrit:

                du coup j'ai changé j'ai fais ça et c'est bon :

                void init(Joueur *reset)
                {
                    int i = 0;
                
                    for (i = 0; i < STRUCT_CASE; i++)
                    {
                    reset->nom[i] = 0;
                    reset->prenom[i] = 0;
                    }
                }
                Je ne peux pas te dire si c'est bon, je ne sais pas ce que vaut STRUCT_CASE !?

                • Partager sur Facebook
                • Partager sur Twitter
                ...
                  28 août 2021 à 19:51:16

                  (Oups, je n'avais pas vu qu'il y a une troisième page...)

                  -
                  Edité par robun 28 août 2021 à 19:51:50

                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 août 2021 à 8:16:15

                    Rouloude j'ai fais un edit je sais pas si tu a vu :

                    1
                    #define STRUCT_CASE 100

                    Je les met dans les headers maintenant les #define, j'en suis à apprendre l'allocation dynamique, je vais pas tarder à réaliser un pendu, je pense que je vais pas trop rigoler devant mais avec de la persévérance je pense bien réussir. 

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Tableau moyenne

                    × 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