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

Résolu
sohaieb Messages postés 174 Statut Membre -  
sohaieb Messages postés 174 Statut Membre -
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

  1. sohaieb Messages postés 174 Statut Membre 7
     
    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