Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un algorithe de tri alphanumérique

Sujet résolu
    25 mars 2020 à 21:17:27

    Salut tout le monde

    Voilà suis bloqué sur un programme tout bête. J'ai créé un programme qui permet de trier dans un ordre alpha numérique des chaînes de caractères contenus dans un tableau.

    Mais ma question est  comment on peut faire de sorte que lorsqu'on exécute le programme : il demande les chaîne de caractères (avec un scanf mais la question est comment avec un char const *array?) et ensuite le programme trie et crée un nouveau fichier dans lequel le résultat sera sauvegardé.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    FILE *myFile=NULL;
    static void consoleWrite (char const **a, size_t b)
    {
       size_t i;
       for (i = 0; i < b; i++)
          fprintf (myFile, "%s ", a[i]);
       printf ("\n");
    }
    
    static int string_cmp (void const *i, void const *j)
    {
       char const *const *pointerI = i;
       char const *const *pointerJ = j;   
       return strcmp (*pointerJ, *pointerI); // comparaison de la chaine de caractère !
    }
    
    int main (void)
    {
       char const *array[] = { 
          "01","fdf","gffg","FRSTM-PFOV1DK","FRSTM-KEFF2OQHT"
          };
     
       myFile =fopen("file.ini", "a+");
       long array_size  =   sizeof array / sizeof *array;
    
       qsort (array,array_size, sizeof *array, string_cmp);
             consoleWrite (array, array_size);
             printf("Le tri a été effectué ! ");
       
    
       return 0;
    }

    Là par exemple c'est mon tableau array qui fait ça ?

    est-ce que vous pouvez m'aider suis bloqué depuis 3 heures ?

    Merci à vous les camarades !



    -
    Edité par meteor141421356237 25 mars 2020 à 21:19:24

    • Partager sur Facebook
    • Partager sur Twitter

    Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.

      25 mars 2020 à 21:25:30

      > Là par exemple c'est mon tableau array qui fait ça ?

      quoi, "ça" ?

      A priori, un tableau, ça ne fait rien.

      -
      Edité par michelbillaud 25 mars 2020 à 21:25:52

      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2020 à 21:34:18

        désolé, je me suis mal exprimé ce que je veux c'est que les valeurs qu'on rentre avec scanf soit stocké dans la variable array et ensuite avec cette variable je fais le tri.
        • Partager sur Facebook
        • Partager sur Twitter

        Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.

          25 mars 2020 à 21:41:59

          On pourrait imaginer quelque chose comme ça :

          for (int i = 0 ; int < nb_de_mots_a_lire ; i++)
          {
              char mot[TAILLEMAXI] ;
              printf("Entrer un mot : ") ;
              scanf("%s", mot) ;
              strcpy(array[i], mot) ;
          }
          

          (Et on peut sûrement se passer de la variable 'mot' en mettant directement 'array[i]' dans le 'scanf'. Disons que procéder comme je l'ai fait aiderait peut-être à contrôler que le 'scanf' a bien lu un mot avant de le mettre dans le tableau.)

          -
          Edité par robun 25 mars 2020 à 21:43:55

          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2020 à 22:05:30

            J''avais déjà essayé mais ça ne marche pas. (en fait j'ai un char const *array) et j'aimerais changer ce char de sorte qu'on puisse le modifier. Sinon je vois pas comment je peux faire strcpy 

            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            FILE *myFile = NULL;
            static void consoleWrite (char **a, size_t b)
            {
               size_t i;
               for (i = 0; i < b; i++)
                  fprintf (myFile, "%s \n", a[i]);
               printf ("\n");
            }
            int string_cmp (void const *i, void const *j)
            {
               char const *const *pointerI = i;
               char const *const *pointerJ = j;   
               return strcmp (*pointerJ, *pointerI); // comparaison de la chaine de caractère !
            }
            int main(void) {
              int array_size = 0;
             char **array;
              char buffer[256];
            
              myFile = fopen("file.ini", "a+");
            
              printf("Veuillez entrez la taille de votre liste (nombre entier): ");
              scanf("%d", &array_size);
              array = malloc(array_size * sizeof(char*));
            
              for(int i = 0; i < array_size; i++) {
            
                printf("N° %d de série:\n ", i);
                scanf("%s", buffer);
                array[i] = malloc(strlen(buffer) + 1);
                strncpy(array[i], buffer, strlen(buffer) + 1);
              }
            
              qsort(array, array_size, sizeof *array, string_cmp);
              consoleWrite(array, array_size);
              printf("Le tri a été effectué ! ");
            
              for(int i = 0; i < array_size; i++)
                free(array[i]);
              free(array);
            
              return 0;
            }

            résolu. merci à tous

            -
            Edité par meteor141421356237 25 mars 2020 à 23:14:28

            • Partager sur Facebook
            • Partager sur Twitter

            Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse.

            Un algorithe de tri alphanumérique

            × 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