Petite erreu de code
Fermé
divx78
Messages postés
115
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
21 mars 2009
-
11 nov. 2008 à 00:44
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 nov. 2008 à 10:56
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 nov. 2008 à 10:56
A voir également:
- Petite erreu de code
- Code asci - Guide
- Code 80072efe ✓ - Forum Windows
- Freewifi secure code ✓ - Forum Réseau
- Netflix code - Guide
- Code puk maroc telecom ✓ - Forum Mobile
6 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
11 nov. 2008 à 01:05
11 nov. 2008 à 01:05
Salut,
Que dois faire ce programme ?
Quels valeurs as-tu donné aux arguments avant d'appeler la fonction ?
Cdlt
Que dois faire ce programme ?
Quels valeurs as-tu donné aux arguments avant d'appeler la fonction ?
Cdlt
divx78
Messages postés
115
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
21 mars 2009
3
11 nov. 2008 à 01:13
11 nov. 2008 à 01:13
salut,
il affiche par ordre alphabetique une chaine
mes parametres sont : "dcba"
il affiche par ordre alphabetique une chaine
mes parametres sont : "dcba"
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
11 nov. 2008 à 01:56
11 nov. 2008 à 01:56
En fait, tu souhaites que ta fonction classe les caractères de ta chaîne par ordre alphabétique ?
Sinon, tu as deux arguments dans ta fonction.
Que signifie le second ? Tu appelles ta fonction avec les paramètres "abcd",0 ou avec "abcd",4 ?
Sinon, tu as deux arguments dans ta fonction.
Que signifie le second ? Tu appelles ta fonction avec les paramètres "abcd",0 ou avec "abcd",4 ?
divx78
Messages postés
115
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
21 mars 2009
3
11 nov. 2008 à 02:12
11 nov. 2008 à 02:12
le second permet de rendre la fonction ecursive ses juste un compteur initialiser :)
voila mon main :
int main(int argc, char **argv)
{
char tab[5] = "dcba";
rev_alpha(tab, 0);
printf("%s", tab);
}
voila mon main :
int main(int argc, char **argv)
{
char tab[5] = "dcba";
rev_alpha(tab, 0);
printf("%s", tab);
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
11 nov. 2008 à 02:43
11 nov. 2008 à 02:43
J'ai du mal à suivre ton algo.
if(str[size + 1])
if(str[size + 1]!='\0') sont pareils.
Donc les imbriquer comme tu as fait t'apportera rien.
J'ai corrigé ton code. Mais attention, les cas particuliers comme str="" vont faire bobo à l'exécution. Donc à traiter.
Comme l'algo est faux, (en fait il manque une itération, sinon t'aurais réussi à inventer un algo de meilleure complexité ^^), tu devras relancer la fonction jusqu'à ce que str soit inchangé. A ce moment-là, le tri aura était accompli. Donc, si tu veux rester avec cette fonction, tu peux en créer une autre, qui l'appellera autant de fois que nécessaire, ou le faire dans le main.
Sinon, tu peux par exemple implémenter le tri sélectif ou le tri à bulle. Ca sera une version itérative, cas d'école.
Sur google, tu devrais trouver comment ça marche ces algos.
A noter que le C implémente le tri rapide (qsort). Après tout dépend du contexte (exercice d'école, ou programme à toi, ou entraînement cérébral ^^)
Cdlt
if(str[size + 1])
if(str[size + 1]!='\0') sont pareils.
Donc les imbriquer comme tu as fait t'apportera rien.
J'ai corrigé ton code. Mais attention, les cas particuliers comme str="" vont faire bobo à l'exécution. Donc à traiter.
Comme l'algo est faux, (en fait il manque une itération, sinon t'aurais réussi à inventer un algo de meilleure complexité ^^), tu devras relancer la fonction jusqu'à ce que str soit inchangé. A ce moment-là, le tri aura était accompli. Donc, si tu veux rester avec cette fonction, tu peux en créer une autre, qui l'appellera autant de fois que nécessaire, ou le faire dans le main.
void rev_alpha(char *str, int size)
{
char temp;
if(str[size + 1])
{
if(str[size] > str[size + 1])
{
temp = str[size];
str[size] = str[size + 1];
str[size + 1] = temp;
}
rev_alpha(str,size+1);
}
}
Sinon, tu peux par exemple implémenter le tri sélectif ou le tri à bulle. Ca sera une version itérative, cas d'école.
Sur google, tu devrais trouver comment ça marche ces algos.
A noter que le C implémente le tri rapide (qsort). Après tout dépend du contexte (exercice d'école, ou programme à toi, ou entraînement cérébral ^^)
Cdlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
divx78
Messages postés
115
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
21 mars 2009
3
11 nov. 2008 à 02:52
11 nov. 2008 à 02:52
Deja je te remercie pour ton code je me permet de donner mon code qui je travaille et il est plutot pas mal il lui manque juste une boucle suplemantaire sur lui meme pour marcher degouter :s
me jen suis content :)
void rev_alpha(char *str, int size)
{
char temp;
char *str2;
if(str[size + 1] != '\0')
{
if(str[size] > str[size + 1])
{
temp = str[size];
str[size] = str[size + 1];
str[size + 1] = temp;
size = size + 1;
if(str[size + 1])
rev_alpha(str, size);
else
{
size = 0;
rev_alpha(str, size);
}
}
else
{
size = size + 1;
rev_alpha(str, size);
}
//size = size + 1;
}
}
Merci a toi.
me jen suis content :)
void rev_alpha(char *str, int size)
{
char temp;
char *str2;
if(str[size + 1] != '\0')
{
if(str[size] > str[size + 1])
{
temp = str[size];
str[size] = str[size + 1];
str[size + 1] = temp;
size = size + 1;
if(str[size + 1])
rev_alpha(str, size);
else
{
size = 0;
rev_alpha(str, size);
}
}
else
{
size = size + 1;
rev_alpha(str, size);
}
//size = size + 1;
}
}
Merci a toi.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 817
11 nov. 2008 à 10:56
11 nov. 2008 à 10:56
Re,
Bah, je te fais une fois de plus les même remarques sur ton code.
Cdlt
Bah, je te fais une fois de plus les même remarques sur ton code.
Cdlt