Probleme de tri en langage c
olbi
-
Ravachol Messages postés 566 Date d'inscription Statut Membre Dernière intervention -
Ravachol Messages postés 566 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à tous,
J'ai un problème avec le programme ci dessous. Il est très simple. Je désire effectuer un simple de tri de nom. Je lis les noms dans un fichier à l'aide d'une redirection. Je souhaite efectué le tri dans une fonction et c'est la que ca ne vas plus. J'ai tester dans le tri dans le programme principal et ca fonctionne. je suppose donc que c'est un probléme dans le passage de la variable nom. Je vous remercie de votre aide.
#include<stdio.h>
#include<string.h>
void main()
{ char nom[5][10],temp[10];
int i,j;
void tri(char *) ;
for (i=0;i<5;i++)
{ scanf("%s",&nom[i]);
printf("nom %d : %s\n",i+1,nom[i]);
}
tri(nom);
printf("\nApres la fonction\n");
for(i=0;i<5;i++)
{printf("nom %d : %s\n",i+1,nom[i]);
}
}
void tri(char *nom)
{ int i,j;
char temp[10];
for(i=0;i<4;i++)
{ for (j=i+1;j<5;j++)
{ if(strcmp(nom[i],nom[j]) < 0)
{ strcpy(temp,nom[i]);
strcpy(nom[i],nom[j]);
strcpy(nom[j],temp);
}
}
}
}
J'ai un problème avec le programme ci dessous. Il est très simple. Je désire effectuer un simple de tri de nom. Je lis les noms dans un fichier à l'aide d'une redirection. Je souhaite efectué le tri dans une fonction et c'est la que ca ne vas plus. J'ai tester dans le tri dans le programme principal et ca fonctionne. je suppose donc que c'est un probléme dans le passage de la variable nom. Je vous remercie de votre aide.
#include<stdio.h>
#include<string.h>
void main()
{ char nom[5][10],temp[10];
int i,j;
void tri(char *) ;
for (i=0;i<5;i++)
{ scanf("%s",&nom[i]);
printf("nom %d : %s\n",i+1,nom[i]);
}
tri(nom);
printf("\nApres la fonction\n");
for(i=0;i<5;i++)
{printf("nom %d : %s\n",i+1,nom[i]);
}
}
void tri(char *nom)
{ int i,j;
char temp[10];
for(i=0;i<4;i++)
{ for (j=i+1;j<5;j++)
{ if(strcmp(nom[i],nom[j]) < 0)
{ strcpy(temp,nom[i]);
strcpy(nom[i],nom[j]);
strcpy(nom[j],temp);
}
}
}
}
A voir également:
- Probleme de tri en langage c
- Langage ascii - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
3 réponses
salut, c'est scanf ("%s", nom[i]); //nom[i] est deja considéré coe pointeur.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Salut,
Il fallait effectivement passer une adresse d'adresse à la fonction de tri.
Ceci fonctionne chez moi. Pas testé à fond, plus trop les yeux en face des trous =>il traine peut-être des couillettes.
#include<stdio.h>
#include<string.h>
void main()
{
char *nom[5]; // Modif
int i,j;
void tri(char **) ; // Modif
for (i=0;i<5;i++)
{
nom[i] = malloc(10*sizeof(char)); // Modif
scanf("%s",nom[i]);
printf("nom %d : %s\n",i+1,nom[i]);
}
tri(&(nom[0])); // Modif
printf("\nApres la fonction\n");
for(i=0;i<5;i++)
{printf("nom %d : %s\n",i+1,nom[i]);
}
for (i=0;i<5;i++) free(nom[i]); // Modif
}
void tri(char *nom[]) // Modif
{ int i,j;
char temp[10];
for(i=0;i<4;i++)
{ for (j=i+1;j<5;j++)
{ if(strcmp(nom[i],nom[j]) < 0)
{ strcpy(temp,nom[i]);
strcpy(nom[i],nom[j]);
strcpy(nom[j],temp);
}
}
}
}
A++
Ni l'ignorance n'est défaut d'esprit,
ni le savoir n'est preuve de génie. LUC DE CLAPIERS
Il fallait effectivement passer une adresse d'adresse à la fonction de tri.
Ceci fonctionne chez moi. Pas testé à fond, plus trop les yeux en face des trous =>il traine peut-être des couillettes.
#include<stdio.h>
#include<string.h>
void main()
{
char *nom[5]; // Modif
int i,j;
void tri(char **) ; // Modif
for (i=0;i<5;i++)
{
nom[i] = malloc(10*sizeof(char)); // Modif
scanf("%s",nom[i]);
printf("nom %d : %s\n",i+1,nom[i]);
}
tri(&(nom[0])); // Modif
printf("\nApres la fonction\n");
for(i=0;i<5;i++)
{printf("nom %d : %s\n",i+1,nom[i]);
}
for (i=0;i<5;i++) free(nom[i]); // Modif
}
void tri(char *nom[]) // Modif
{ int i,j;
char temp[10];
for(i=0;i<4;i++)
{ for (j=i+1;j<5;j++)
{ if(strcmp(nom[i],nom[j]) < 0)
{ strcpy(temp,nom[i]);
strcpy(nom[i],nom[j]);
strcpy(nom[j],temp);
}
}
}
}
A++
Ni l'ignorance n'est défaut d'esprit,
ni le savoir n'est preuve de génie. LUC DE CLAPIERS