Aidez moi exercice en c

Résolu
Bonsoir,

voila svp
donnez moi la sol de cet exo en c merci (je n'ai besoin trés rapidement si vous pouvez)

on considere un mat[10][20] de chaine de caract.chaque ligne comporte un mot .choisir une methode de tri(bulle;selection;insertion) et appliquer a la matrice afin de la trier dans l'ordre croissant les mots enregistrer dans la mat

merci de votre aide
Configuration: Windows XP
Firefox 2.0.0.3

20 réponses

  • Votes
  • Date
  • Date décroissante
  1. Creusons nous la tete pendant qu'il se tourne les pouces !!!

    Sérieusement, si tu veux de l'aide, commence par essayer, et si tu as des problèmes, fais le nous savoir !
    1. il faut que tu regarde la premiere case de chaque ligne et tu fait un tri par ordre alphabetique
      voila
      bonne chance
      poste ce tu as essayé et on t'aideras
      1. voial ce que j'ai pensé mais ça marche pas apperement
        #include<stdio.h>
        #include<string.h>
        #include<stdlib.h>

        main()
        {int p,i,n,j;char a[20];char x[20];
        printf("donnez le nombre de mot\n");
        scanf("%d",&n);
        for(i=0;i<n;i++) {printf("donnez le %d eme mot",i);
        gets(a);}

        for(i=0;i<n;i++)
        {for(j=n-1;j<=i;j--)
        {for(p=0;p<20;p++)
        {if (a[j-1][p]<a[j][p]) break;}
        strcpy(x,a[j-1][p]);
        strcpy(a[j-1][p],a[j][p]);
        strcpy(a[j][p],x);
        }
        }
        system("pause");
        }

        je suis totalement blocké aidez moi merci

        au moin dite moi quel est l'idée a faire pour que je puisse reflichir

        merci
        1. voila j'ai essayé de faire ça aussi

          #include <stdio.h>
          #include <string.h>
          #include <stdlib.h>
          main()
          {int i,j,n,m;
          char ch[20],a[10][20];
          char **p;
          printf("donnez n:\n");
          scanf("%d",&n);
          printf("donnez m:\n");
          scanf("%d",&m);
          for(i=0;i<n;i++)
          {printf("donnez le %deme mot:\n",i+1);
          scanf("%s",ch);
          strcpy(a[i],ch);}

          for(i=0;i<=n-1;i++) {
          if(ch[i]>ch[i+1]) {*(p+i)=ch[i+1];*(p+i+1)=ch[i];}
          }
          p=(char **)malloc(sizeof( char *));
          for(i=0;i<n;i++)
          {*(p+i)=a[i];
          printf("%s\n",*(p+i));
          }

          system("pause");
          }
          1. voila je me suis iscrit pour modifie le dernier poste mais je ne peut pas

            voila

            #include <stdio.h>
            #include <string.h>
            #include <stdlib.h>
            main()
            {int i,j,n,m;
            char ch[20],a[10][20];
            char **p;
            printf("donnez n:\n");
            scanf("%d",&n);
            printf("donnez m:\n");
            scanf("%d",&m);
            for(i=0;i<n;i++)
            {printf("donnez le %deme mot:\n",i+1);
            scanf("%s",ch);
            strcpy(a[i],ch);}

            p=(char **)malloc(sizeof( char *));
            for(i=0;i<n;i++)
            {*(p+i)=a[i];
            printf("%s\n",*(p+i));
            }

            for(i=0;i<=n-1;i++) {
            if(ch[i]>ch[i+1]) {*(p+i)=ch[i+1];*(p+i+1)=ch[i];}
            }
            p=(char **)malloc(sizeof( char *));
            for(i=0;i<n;i++)
            {*(p+i)=a[i];
            printf("%s\n",*(p+i));
            }

            system("pause");
            }
            1. tu peux faire plus simple
              essaye ça:
              #include<stdio.h>
              #include<string.h>
              #include<stdlib.h>
              
              main()
              {
                  int i,j;
                  char tab[10][20];char x[20];
              
                  for(i=0;i<10;i++)
                  {
                      printf("donnez le mot %i : \n",i+1);
                      scanf("%s",&tab[i]);
                  }
                      printf("tableau de mot avant tri\n");
                      for(i=0;i<3;i++)
                          printf("%s\n",tab[i]);
              
                  for(i=0;i<9;i++)
                      for(j=i+1;j<10;j++)
                          if(tab[i][0]>tab[j][0])
                          {
                              strcpy(x,tab[i]);
                              strcpy(tab[i],tab[j]);
                              strcpy(tab[j],x);
                          }
              
                  printf("\ntableau de mot apres tri\n");
                      for(i=0;i<3;i++)
                          printf("%s\n",tab[i]);
              system("pause");
              }
              
              1. merci
                je l'ai testé mais il ne tri rien je ne sais pas pourquoi
                il me donne les meme mot sans tri
                apres le tri ???
            2. regarde si on a 2mot

              comme ça

              aaa
              aab

              ton program ne compare que le 1er caract de chaque

              mais merci quand meme tu ma donné une bonne idée
              1. en effet j'avais oublié de traité le cas ou les deux mots auraient le meme premier caractere a ce moment il faut comparer le caractere suivant
                mais je pense que la tu as toutes les pistes pour finir ton programme
                bonne chance ;)
            3. voila je l'ai modifie mais ya tjr un pti prblm

              #include<stdio.h>
              #include<string.h>
              #include<stdlib.h>

              main()
              {
              int i,j,k;
              char tab[10][20];char x[20];

              for(i=0;i<5;i++)
              {
              printf("donnez le mot %d : \n",i+1);
              scanf("%s",&tab[i]);
              }
              printf("tableau de mot avant tri\n");
              for(i=0;i<5;i++)
              printf("%s\n",tab[i]);

              for(i=0;i<5;i++)
              for(j=i+1;j<5;j++)
              for(k=0;k<5;k++)
              if(tab[i][k]>tab[j][k])
              {
              strcpy(x,tab[i]);
              strcpy(tab[i],tab[j]);
              strcpy(tab[j],x);
              }

              printf("\ntableau de mot apres tri\n");
              for(i=0;i<5;i++)
              printf("%s\n",tab[i]);
              system("pause");
              }

              quand je lui donne ça

              tableau de mot avant tri
              amine
              amina
              aaa
              xxx
              bbb

              voila le resultat
              tableau de mot apres tri
              xxx
              bbb
              aaa
              amina
              amine

              ou est l'erreur aidez moi svp
              1. j'ai rien trouvé le prgram bug encore y'aura pas quelqu'un parmi vous qui peut m'aider svp

                j'ai besoin de la sol
                1. pourtant je t'ai donné la solution s'ils ont le meme caractere il faut regarder le suivant
                  essaye ça
                  #include<stdio.h>
                  #include<string.h>
                  #include<stdlib.h>
                  
                  main()
                  {
                      int i,j,k=0,l=0;
                      char tab[5][20];char x[20];
                  
                      for(i=0;i<5;i++)
                      {
                          printf("donnez le mot %i : \n",i+1);
                          scanf("%s",&tab[i]);
                      }
                          printf("tableau de mot avant tri\n");
                          for(i=0;i<5;i++)
                              printf("%s\n",tab[i]);
                  
                      for(i=0;i<4;i++){
                          for(j=i+1;j<5;j++){
                              k=0;l=0;
                               while(tab[i][k]==tab[j][l]){
                                  k++;l++;}
                              if(tab[i][k]>tab[j][l])
                              {
                                  strcpy(x,tab[i]);
                                  strcpy(tab[i],tab[j]);
                                  strcpy(tab[j],x);
                              }
                          }
                      }
                      printf("\ntableau de mot apres tri\n");
                          for(i=0;i<5;i++)
                              printf("%s\n",tab[i]);
                  system("pause");
                  }
                  
                  1. Modérateur
                    Salut,

                    voici encore une possibilité
                    #include<stdio.h>
                    #include<string.h>
                    #include<stdlib.h>
                    
                    main ()
                    {
                      int i, j, k;
                      char tab[10][20];
                      char x[20];
                    
                      for (i = 0; i < 5; i++){
                          printf ("donnez le mot %d : \n", i + 1);
                          scanf ("%s", &tab[i]);
                      }
                      printf ("tableau de mot avant tri\n");
                      for (i = 0; i < 5; i++)
                        printf ("%s\n", tab[i]);
                    
                      for (i = 0; i < 5; i++){
                        j = i;
                        while (j>0 && strcmp(tab[j],tab[j-1]) < 0){
                          strcpy (x, tab[j-1]);
                          strcpy (tab[j-1], tab[j]);
                          strcpy (tab[j--], x);
                        }
                      }
                    
                      printf ("\ntableau de mot apres tri\n");
                      for (i = 0; i < 5; i++)
                        printf ("%s\n", tab[i]);
                      system ("pause");
                    }
                    
                    1. essaye ça mon frere et salue boukhedouma de ma part :)

                      #include<stdio.h>
                      #include<string.h>
                      #include<stdlib.h>

                      main()
                      {
                      int i,j,k,l,n;
                      char tab[5][20];char x[20];
                      printf("donnez le nbre de mots:\n");
                      scanf("%d",&n);

                      for(i=0;i<n;i++)
                      {
                      printf("donnez le mot %i : \n",i+1);
                      scanf("%s",&tab[i]);
                      }
                      printf("tableau de mot avant tri\n");
                      for(i=0;i<n;i++)
                      printf("%s\n",tab[i]);

                      for(i=0;i<n-1;i++){
                      for(j=i+1;j<n;j++){
                      k=0;l=0;
                      while(tab[i][k]==tab[j][l]){
                      k++;l++;}
                      if(tab[i][k]>tab[j][l])
                      {
                      strcpy(x,tab[i]);
                      strcpy(tab[i],tab[j]);
                      strcpy(tab[j],x);
                      }
                      }
                      }
                      printf("\ntableau de mot apres tri\n");
                      for(i=0;i<n;i++)
                      printf("%s\n",tab[i]);
                      system("pause");
                      }

                      a bientot

                      ------------------
                      http://forum.ouedkniss.com