Aidez moi exercice en c

Résolu/Fermé
argelino - 7 déc. 2007 à 15:30
messi89 Messages postés 27 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 1 décembre 2009 - 8 déc. 2007 à 16:24
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

20 réponses

Mycki Messages postés 113 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 17 décembre 2007 46
7 déc. 2007 à 15:56
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
jackom Messages postés 62 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 24 février 2009 16
7 déc. 2007 à 16:02
aide toi et nous t'aideron
0
j'ai essaye mais je n'ai rien oubtenu

je veux juste l'idée

merci
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
7 déc. 2007 à 16:40
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ok je vais essayé
0
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
0
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");
}
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 17:29
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");
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
7 déc. 2007 à 17:37
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");
}
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 17:49
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 ???
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 17:58
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
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
7 déc. 2007 à 18:05
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 ;)
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 18:08
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
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
7 déc. 2007 à 18:37
il tri dans l'ordre inverse il faut peut etre inverser le test...
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 18:57
est qu'il y a quelqu'un qui a trouvé la sol svp
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 19:28
svp aidez moi

j'ai besoin de vous???
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 20:11
alors??? :(
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 21:51
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
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
7 déc. 2007 à 22:15
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");
}
0
argelino Messages postés 9 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 23:00
merci bcp
tu m a sauvé
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 déc. 2007 à 23:29
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");
}
0
messi89 Messages postés 27 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 1 décembre 2009 1
8 déc. 2007 à 16:24
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
0