Trie d'un Tableau de Chaine de char(sans pointeur)
Résolu
sohaieb
Messages postés
146
Date d'inscription
Statut
Membre
Dernière intervention
-
sohaieb Messages postés 146 Date d'inscription Statut Membre Dernière intervention -
sohaieb Messages postés 146 Date d'inscription Statut Membre Dernière intervention -
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:
________________
________________
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"); }
________________
A voir également:
- Trie d'un Tableau de Chaine de char(sans pointeur)
- Trier un tableau excel - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
1 réponse
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");
}
#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");
}