Je ne trouve pas ce qui me manque ..
Fermé
nono20013
Messages postés
3
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
8 novembre 2014
-
8 nov. 2014 à 14:49
nono20013 Messages postés 3 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 8 novembre 2014 - 8 nov. 2014 à 23:44
nono20013 Messages postés 3 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 8 novembre 2014 - 8 nov. 2014 à 23:44
A voir également:
- Je ne trouve pas ce qui me manque ..
- Pourquoi ma tv ne trouve pas toutes les chaînes - Guide
- Ou se trouve la corbeille de whatsapp - Guide
- Word a trouvé du contenu illisible - Guide
- Comment trouver ce qui ralentit mon pc - Guide
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
8 nov. 2014 à 17:50
8 nov. 2014 à 17:50
Comme dit par gravgun, les noms d'argument sont mal choisis (là ce n'est pas une question de "trouver les erreurs" mais d'avoir un code plus parlant pour les autres...).
Donc plutôt que argv1 pourquoi ne pas mettre chaine ?
De même pour argv2 et argv3.
D'ailleurs, je te conseillerai de vérifier le nombre d'arguments avant d'utiliser argv... Et les commentaires ? Cela nous serait utile pour comprendre ton programme ou alors décris-nous plus ce que doit faire la fonction.
Pourquoi utiliser my_putchar() au lieu de putchar() de même pour putstr. Les fonction my_... ne sont pas portables... A moins que ce soit toi qui les as faites ?
T'aurais même pu faire une fonction supplémentaire pour
while (argv1[i] != '\0')
Oui mais comme i n'est pas initialisé, il y a de forte chance que ça crash.
else if (argv2[b] != argv3[b])
Ce n'est pas logique, c'est en fait un pléonasme. Si tu es dans le else, c'est que tu es sûr d'avoir cette condition...
while (argv1[i] != '\0')
{...
i = 0;}
Ca sent la boucle infinie ça...
while (argv2[i] != '\0')
Pourquoi commencer à l'indice i ? C'est pas logique, on commence plutôt du début de l'alphabet, donc b plutôt.
En relisant ton code, j'ai l'impression que tu as mélangé les variables i et b...
N'hésite pas à reposter ton code en tenant compte de nos remarques pour qu'on y voit plus clair, si jamais ton problème persiste.
Cdlt,
Donc plutôt que argv1 pourquoi ne pas mettre chaine ?
De même pour argv2 et argv3.
D'ailleurs, je te conseillerai de vérifier le nombre d'arguments avant d'utiliser argv... Et les commentaires ? Cela nous serait utile pour comprendre ton programme ou alors décris-nous plus ce que doit faire la fonction.
Pourquoi utiliser my_putchar() au lieu de putchar() de même pour putstr. Les fonction my_... ne sont pas portables... A moins que ce soit toi qui les as faites ?
T'aurais même pu faire une fonction supplémentaire pour
while (argv1[i] != '\0')
Oui mais comme i n'est pas initialisé, il y a de forte chance que ça crash.
else if (argv2[b] != argv3[b])
Ce n'est pas logique, c'est en fait un pléonasme. Si tu es dans le else, c'est que tu es sûr d'avoir cette condition...
while (argv1[i] != '\0')
{...
i = 0;}
Ca sent la boucle infinie ça...
while (argv2[i] != '\0')
Pourquoi commencer à l'indice i ? C'est pas logique, on commence plutôt du début de l'alphabet, donc b plutôt.
En relisant ton code, j'ai l'impression que tu as mélangé les variables i et b...
N'hésite pas à reposter ton code en tenant compte de nos remarques pour qu'on y voit plus clair, si jamais ton problème persiste.
Cdlt,
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 8/11/2014 à 16:02
Modifié par gravgun le 8/11/2014 à 16:02
'lut, pas super descriptif comme nom ça,
Et ton algorithme est très peu compréhensible; surtout qu'il ne s'arrête jamais:
Je pense que tu voulais mettre
Donc pour chaque caractère de argv1, tu itèrerais sur le contenu d'argv2... Et après je pige plus, b est le compte d'itération d'argv1, et tu compares l'emplacement b de argv2 et argv3? Quel bazar, je ne vois pas la logique.
Un conseil: refais ton code depuis le début, avec des noms plus concis ;)
from human import idiocy
del idiocy
argv1, argv2, argv3... on ne sait pas a quoi ça correspond: est-ce la chaine a traduire, un alphabet de référence?
Et ton algorithme est très peu compréhensible; surtout qu'il ne s'arrête jamais:
while (argv1[i] != '\0')n'évaluera à
true(donc sortira du
while) uniquement si argv1 est vide (contient que
\0), car a chaque fin d'itération tu fais
i = 0;.
Je pense que tu voulais mettre
while (argv1[b] != '\0').
Donc pour chaque caractère de argv1, tu itèrerais sur le contenu d'argv2... Et après je pige plus, b est le compte d'itération d'argv1, et tu compares l'emplacement b de argv2 et argv3? Quel bazar, je ne vois pas la logique.
Un conseil: refais ton code depuis le début, avec des noms plus concis ;)
from human import idiocy
del idiocy
nono20013
Messages postés
3
Date d'inscription
samedi 8 novembre 2014
Statut
Membre
Dernière intervention
8 novembre 2014
8 nov. 2014 à 16:25
8 nov. 2014 à 16:25
le probleme pour moi c'est que j'arrive pas a trouvé les erreurs .. dans la logique le code est bon, enfin je pense ..
argv1 représente la chaine a traduire.
argv2 représente l'alphabet 1.
argv3 représente l'alphabet 2.
nono
argv1 représente la chaine a traduire.
argv2 représente l'alphabet 1.
argv3 représente l'alphabet 2.
nono
8 nov. 2014 à 17:53
On dit "qui les ais faites" ;)
8 nov. 2014 à 18:23
Sinon, le subjonctif de l'auxiliaire avoir à la deuxième personne est "aies" et non "ais" ;-)
8 nov. 2014 à 23:44
Merci en tous cas a vous deux ;')