Sources à compléter

thomas :

"On n'a pas besoin de calculer la longueur dans cet exo.

C'est un boucle
while(s[i] !='\0')"

Je ne fais que citer.

Et aussi, il y a une erreur, je ne sais pas si c'est fait exprès, mais tu dois incrémenter n avant d'allouer la zone mémoire,car sinon il n'y a pas de place pour le '\0' et donc il vire la lettre et tu te retrouves avec une lettre de moins.
En gros mon code est fonctionnel et le tiens il passe même pas 1 test(en admettant que la fonction soit codée impeccablement)
Et c'est peut être pour cela que j'ai pas mes 100 points(que j'avais avant d'utiliser ton code).
Si c'est le cas, je demande que l'on puisse m'effacer toute la partie entrainement que j'ai fait jusqu'à présent.

"On n'a pas besoin de calculer la longueur dans cet exo." Hé bien, ignore juste l'argument si tu n'en as pas besoin. Ce n'est pas compliqué... si ? Certaines personnes préfèrent peut-être faire une boucle sur l'indice, sans se demander quel est le caractère de fin de chaîne. Bref, chacun fait comme il souhaite et je ne vois vraiment pas l'intérêt de ce "débat".

En effet, il manque le dernier caractère. Il suffit d'ajouter 1 à calloc et fgets.

"Il suffit d'ajouter 1 à calloc et fgets."
Oui plutôt 1 à n juste après le scanf, c'est d'autant plus efficace.

et C'est pour cela que je n'ai pas mes 10 points restants?

Si on ajoute pas 1, on n'aura pas le '\0'... mais on aura tout le texte que l'on veut. Donc si on a la longueur de la chaîne, le '\0' (qui est en fait un 0) est facultatif. Donc au niveau propreté de la programmation, c'est pas top, mais ce n'est pas ce qui nous intéresse ici. D'ailleurs, les sources sont proposées... perso en général je les prends pas, ça me prend 2 minutes voire moins de les coder tout seul.
Et puis si un algo est bon, que le code proposé est compris par celui qui choisit de l'utiliser, bah ya aucune raison de rater des tests.

"mais on aura tout le texte que l'on veut"

Erreur, car le fgets te laisse entrer/taper le nombre de caractère envoyés -1
et il laisse de place pour le '\0'
et donc si tu envoies fgets(s,1,stdin);

Tu taperas ce que tu veux, il suffit que tu fasses printf("%s",s);
tu verras le résultat.
Donc là c'est bien une erreur de code source(plutôt grave) et donc je trouve que faire des remarques sur mon code source(je rappelle que le site bogue un peu au niveau du forum et des balises codes, d'où la très mauvaise présentation)alors que cette personne n'est pas capable de fournir un code source fonctionnel est un peu déplacé.(pour ceux qui me disent que on cherche à faire le vite et non pas le sécurisé, je leur dit : Expliquez moi la présence de calloc et l'argument n.

Et en plus c'est pas que je veux faire mon chiant, mais lors d'un projet, on m'a dit que les chaines de caractères passaient avant(dans l'ordre d'écriture des paramètres)que les variables classiques.
Mais bon, cela est facultatif, et il y a déjà suffisamment de travail avec cela.

Merci de votre lecture.

:|

"donc je trouve que faire des remarques sur mon code source"
J'ai relu le topic. Personne n'a fait de remarque sur ton code. On a juste fait des remarques sur tes remarques.

Honnêtement, faire un débat là-dessus...

Le principe d'un exo c'est de travailler l'algorithmique, pas la récupération de données ou l'utilisation de strlen. Si c'est pas sécurisé, certes c'est pas une habitude à prendre mais ici on s'en fiche, ça revient au même.
Concernant n, libre à toi de l'utiliser, de prendre une ou deux lignes pour le trouver, ou d'utiliser while(str[i] != '\0'). Encore une fois ça n'a pas d'importance sur le vrai côté algo. Moi je l'utilise, toi tu l'utilises pas. On ne va pas le retirer tout comme on ne va pas imposer son utilisation.

Tant que le code de lecture marche, c'est bon, y'a pas à réflechir plus loin, c'est pas sur ce point là que tu passeras ou non un test.
S'il ne marche pas, tu le signales et puis voilà. Moi aussi je n'ai pas eu les 100 points sur un ou deux exos à cause de ça... et alors ? Le score ne veut pas dire grand chose en entraînement.

Enfin tout ça pour dire : arrêtons ces débats inutiles.

Peace and Love. :P (je me prépare, ma df c'est le 14 février)

"J'ai relu le topic. Personne n'a fait de remarque sur ton code. On a juste fait des remarques sur tes remarques."

Eh bien t'as mal relu

"(et puis excuse moi, mais c'est quand même plus joli que ton code :-)"

Voilà ce qui est dit.

"Enfin tout ça pour dire : arrêtons ces débats inutiles."

Je pense que l'on est d'accord sur ce point.

C'est corrigé pour le n+1 (ainsi que dans la grammaire de l'outil de génération :-), merci.

Bon, et puis inutile de se chercher des noises pour des histoires de code... on est là pour apprendre en s'amusant, pas pour faire la course aux points ou pour débattre pendant 3 pages de la pertinence de telle ou telle donnée...

"on est là pour apprendre en s'amusant, pas pour faire la course aux points ou pour débattre pendant 3 pages de la pertinence de telle ou telle donnée..."

Je suis d'accord avec toi.

Erreur dans la source Java de "Fil d'Ariane, revisité" de la demi-finale 2009 :

laby = new int[h][l];

Ce devrait être char.

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.