|
|
|
|
Bonjour,
voila je veux mettre dans l'ordre alphabétique les arguments qui sont passés a mon programme, pour ça j'ai une fonction dont le prototypage est
char **my_sort_char_tab(char **tab, int size)
je l'appelle comme ceci
my_sort_char_tab(argv,argc);
comme je n'ai pas le temps de me prendre la tete du coup ma fonction de tri est bourrin:
char **my_sort_char_tab(char **tab, int size)
{
int i;
int i2;
int flag;
flag = 1;
while (flag == 1)
{
flag = 0;
i = 0;
while (i < size)
{
if (tab[i] > tab[i + 1])
{
i2 = 0;
flag == 1;
while (i2 != my_strlen(*tab[i]))
{
my_swap(&tab[i][i2], &tab[i + 1][i2]);
i2++;
}
}
i++;
}
}
return (tab);
}
la ligne qui pose probleme au compilateur est:
my_swap(&tab[i][i2], &tab[i + 1][i2]);
my_swap est une fonction qui échange la premiere adresse avec la deuxieme.
deux questions:
pourquoi ça compile pas?
et
est ce possible de simplement échanger l'adresse des premieres entrées du tableau afin d'éviter de devoir échanger les entrées caractère par caractère un truc du style:
my_swap(&tab[i], &tab[i + 1]);
sans préciser la position sur la deuxieme entrée.
Merci
Configuration: Windows XP Firefox 1.0.1
Sur la forme :
|
>Sur la forme :
|
Répondre à le père
|
Je reconnais bien la les règles débiles de programmation de l'epitech. Pas de for, pas le droit d'utiliser des fonctions standards... enfin passons, c'est un débat que j'ai eu avec un de tes confrères (marinaris, je ne sais pas si tu le connais...)
void swap(int *a,int *b){
int c = *a;
*a = *b;
*b = c;
}
Pour résoudre ton exercice tu devrais aborder le problème proprement en t'inspirant des fonctions standards, qui en fait forment le découpage logique de ton problème : 1) définir l'équivalent de strcmp pour implémenter une relation d'ordre total sur les chaînes. 2) définir une fonction de tri générique sur un tableau et prenant en paramètre un pointeur sur la fonction implémentant ta relation d'ordre, à l'image de la fonction qsort. Bonne chance
|