Correction d'un code (exercice) - C - Programmation
Marsh Posté le 15-06-2009 à 17:24:18
(et les warnings, on doit les deviner ?)
Ouh putain, la ligne 13
Et si jamais ton utilisateur saisit des mots de plus de 30 caractères, tu penseras à lui dire de redémarrer son PC ensuite, pour anticiper le plantage qui ne manquera pas d'arriver
Marsh Posté le 15-06-2009 à 17:31:46
Harkonnen a écrit : (et les warnings, on doit les deviner ?) |
Nan mais c'est terminé depuis presque 10 ans Win9x et ses écrans bleus sur un scanf(), hein.
Marsh Posté le 15-06-2009 à 17:35:45
Elmoricq a écrit : |
Ca correspond justement à la période où j'ai du écrire ma dernière ligne de C
Marsh Posté le 15-06-2009 à 18:03:12
Harkonnen a écrit : (et les warnings, on doit les deviner ?) |
Oups !
Les voici:
13 C:\Documents and Settings\Administrator\Desktop\correction.c [Warning] assignment makes integer from pointer without a cast
37 C:\Documents and Settings\Administrator\Desktop\correction.c [Warning] passing arg 1 of `codage' makes pointer from integer without a cast
50 C:\Documents and Settings\Administrator\Desktop\correction.c [Warning] passing arg 1 of `codage' makes pointer from integer without a cast
Marsh Posté le 15-06-2009 à 18:20:37
Il ne faut pas mettre un & ou un * qq part à la ligne 13?
Marsh Posté le 15-06-2009 à 23:21:11
Ligne 13 : faut que tu castes tes int en char
result=lettre+(char)signe*(char)i*(char)nb;
Marsh Posté le 15-06-2009 à 23:23:04
Et je pense que pour les 2 autres erreurs, le probleme vient du prototype de la fonction codage, lettre est juste un char, pas un tableau de char
char codage (char lettre[], int i,int nb) --> char codage (char lettre, int i,int nb)
Marsh Posté le 15-06-2009 à 23:46:22
non tout faux, lire le code ne suffit pas, faut le comprendre aussi
et arreter d epenser qu'un warning de cast se resout en castant comme un porc
l13 :
result = lettre[signe*i*nb];
Marsh Posté le 16-06-2009 à 07:43:24
Joel F a écrit : non tout faux, lire le code ne suffit pas, faut le comprendre aussi |
J'aurais tendance à être plutôt de l'avis de boblenain, pour moi il ne faut envoyer qu'un char en premier paramètre de la fonction "codage", pas un tableau de char (sinon je vois pas bien l'intérêt de passer l'intégralité du tableau à chaque appel de la fonction, i.e à chaque itération de la boucle for). Du coup, "lettre" est de type char et n'accepte pas "lettre[xxx]". Par contre, je ne comprends pas bien la méthode de codage, cette ligne 13 reste mystérieuse.
Autre (petite) erreur spotted : ligne 34, les "%i" pour formater les string "mot" et "code" (d'ailleurs, je suis toujours mal à l'aise avec l'emploi de %i pour les int, j'ai toujours utilisé le %d, je me demandais si tous les compilateurs acceptaient le %i, j'imagine que oui)
Marsh Posté le 16-06-2009 à 08:22:01
Turkleton a écrit : |
J'ai pas lu le bon bout
Ouais char lettre oui mais n'empeche que le transtypage foireux à totu va = niet
Marsh Posté le 16-06-2009 à 13:31:58
Joel F a écrit : non tout faux, lire le code ne suffit pas, faut le comprendre aussi |
Joel F a écrit : |
Transtypage int <-> char, c'est pas du transtypage foireux à tout va amha. Sinon faut modifier bien plus de choses dans son code ..
Marsh Posté le 16-06-2009 à 13:42:48
Dans l'optique que j'en avais (pointer<->integer) si. La ofc non
Marsh Posté le 15-06-2009 à 17:12:27
Bonjour bonjour,
C'est encore moi avec des exercices ^^.
Celui ci il faut juste corriger un code où il y a intentionnellement des erreurs.
Je pense avoir corrigé la plupart, mais il me reste deux warnings là ou j'ai marqué "erreurs à corriger"
Je voudrais juste votre avis.
Voilà le code de départ:
Ma correction:
Merci beaucoup!