Trie d'un Tableau de Chaine de char(sans pointeur)

Résolu/Fermé
sohaieb Messages postés 146 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 1 septembre 2017 - 19 févr. 2013 à 11:09
sohaieb Messages postés 146 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 1 septembre 2017 - 19 févr. 2013 à 13:26
Bonjour,
le sujet comme l'indique le titre , c'est de trier un tableau de chaine de caractère sans l'utilisation la notion du pointeur , alors que , si je mets N=2 (c'est à dire 2 chaine ) il trie normalement , mais si je met par exemple N=3 , parfois il fait le trie , et parfois non , alors c'est quoi le problème exactement? (à propos , j'ai utiliser gets pour la saisi de chaine , mais j'ai remarqué qu'il ignore l'étape 0 , par contre avec scanf il ne l'ignore pas aussi pourquoi?) et merci d'avance , voiçi le code:
________________
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define n 100
void main(){
int i,j,b,min;
char a[n][n];
char c[n]="";
printf("entrer la taille du tableau");
scanf("%d",&b);
for(i=0;i<b;i++){
    scanf("%s",a[i]);
}
 
i=0;
for(i=0;i<b;i++){
    min=i;
    for(j=i+1;j<=b;j++){
            printf("min init=%d\na[min]=%s\n",min,a[min]);
        if(strcmp(a[j],a[min])<0){
            min=j;
            printf("i=%d\n",i);
            printf("min=%d\n",min);
            printf("a[min]=%s\n",a[min]);
            if(min!=i){
 
                strcpy(c,a[i]);
                printf("aux=%s,a[%d]=%s\n",c,i,a[i]);
                strcpy(a[i],a[min]);
                printf("a[%d]=%s,a[min]=%s\n",i,a[i],a[min]);
                strcpy(a[min],c);
                printf("a[min]=%s,aux=%s\n",a[min],c);
            }
        }
 
    }
 
 
}
for(i=0;i<=b;i++){
    puts(a[i]);
}
system("pause");
}

________________

1 réponse

sohaieb Messages postés 146 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 1 septembre 2017 7
19 févr. 2013 à 13:26
Résolution:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define n 100
void main(){
int i,j,b,e,min;
char a[n][n];
char c[n]="";
printf("entrer la taille du tableau\n");
scanf("%d", &b);
getc(stdin);

for(i=0;i<b;i++){
gets(a[i]);
}

i=0;
for(i=0;i<b-1;i++){
min=i;
for(j=i+1;j<b;j++){
printf("min init=%d\na[min]=%s\n",min,a[min]);
if(strcmp(a[j],a[min])<0){
min=j;}}
printf("i=%d\n",i);
printf("min=%d\n",min);
printf("a[min]=%s\n",a[min]);
if(min!=i){

strcpy(c,a[i]);
printf("aux=%s,a[%d]=%s\n",c,i,a[i]);
strcpy(a[i],a[min]);
printf("a[%d]=%s,a[min]=%s\n",i,a[i],a[min]);
strcpy(a[min],c);
printf("a[min]=%s,aux=%s\n",a[min],c);
for(e=0;e<b;e++){
printf("=>%s\n",a[e]);

}
printf("\n\n");
}





}
printf("*********result*********\n");
for(i=0;i<=b;i++){
puts(a[i]);
}
system("pause");
}
0