Je ne trouve pas ce qui me manque ..
nono20013
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
nono20013 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
nono20013 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
bonjour à tous,
je suis actuellement en train de réalisé un projet qui consiste a traduire une chaine de caractère passée en parametre avec donc 2 alphabets différents . Nous avons donc au total 3 arguments. je vous met le code si dessous :
je n'arrive pas a trouvé soit ce qu'il me manque pour que mon programme puisse marché (car mon programme compile), soit ou est l'erreur dans mon programme .
Si j'ai oublié des infos, dites le moi !
Merci d'avance à tous ce qui pourront m'aidé.
cordialement,
nono
je suis actuellement en train de réalisé un projet qui consiste a traduire une chaine de caractère passée en parametre avec donc 2 alphabets différents . Nous avons donc au total 3 arguments. je vous met le code si dessous :
int translator(char *argv1, char *argv2, char *argv3) { int i; int b; b = 0; while (argv1[i] != '\0') { while (argv2[i] != '\0') { if (argv2[b] == argv3[b]) { my_putchar(argv2[i]); } else if (argv2[b] != argv3[b]) { my_putchar(argv3[i]); } i = i + 1; } b = b + 1; i = 0; } return (i); } int main(int argc, char **argv) { int i; i = 0; translator(argv[1], argv[2], argv[3]); my_putstr(argv[1]); my_putchar('\n'); }
je n'arrive pas a trouvé soit ce qu'il me manque pour que mon programme puisse marché (car mon programme compile), soit ou est l'erreur dans mon programme .
Si j'ai oublié des infos, dites le moi !
Merci d'avance à tous ce qui pourront m'aidé.
cordialement,
nono
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 le presse papier - Guide
- Ou se trouve la corbeille de whatsapp - Guide
- Nous sommes désolé nous n'avons pas trouvé snapchat - Forum Snapchat
- Où se trouve mon adresse url ? - Guide
3 réponses
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,
'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
On dit "qui les ais faites" ;)
Sinon, le subjonctif de l'auxiliaire avoir à la deuxième personne est "aies" et non "ais" ;-)
Merci en tous cas a vous deux ;')