Suite visuelle

Bonjour,

je vous écris pour vous signaler un bug, qui peut-être vient de moi mais je ne vois vraiment pas d'où dans ce cas...

Je m'explique, j'ai fait une algo assez simple pour l'exercice dont je vous parle, je suis sur qu'elle est correcte.

Malheureusement, à un moment je déclare une variable (que j'ai d'abord appelé lastelem, olastelem, lelem sans changements) que j'initialise à zéro, puis dans une boucle je mets

lastelem = tab[i];

avant cette affectation lastelem vaut toujours 0, tab[i] vaut 1 (pour le premier test), mais après tab[i] vaut toujours 1 mais lastelem 49 oO

Je ne vois vraiment pas d'où ça pourrait venir, aussi je précise que j'ai modifié le code fournis pour éviter de passer par malloc, parce qu'en c++ il faut faire un cast pour convertir de void* en autre chose, et que tout ça ralenti assez...

Merci de votre aide !

Le serveur prend ton code, le compile et l'exécute. Il ne s'amuse pas à modifier ce que tu as tapé.
Soit il y a un bogue dans ton code, soit un bogue dans gcc. :)

Teste bien ton code chez toi, pense à activer les warnings quand tu compiles (si tu es sous Unix, essaie avec Valgrind). Sans indication, c'est difficile de t'aider. Si tu es vraiment bloqué, tu peux toujours envoyer un mail avec ton code.

et que tout ça ralenti assez...

Je suis d'accord que les malloc dans le code C++ sont moches, mais le fait de faire un cast ne ralentit rien.

j'ai essayé avec cast, avec new, avec une taille fixe... rien n'y fait :x

je suis sous windows, et j'ai testé en local avec VC++ express (édité : en plus du site d'entrainement)...

Les seuls warnings sont sur l'utilisation de scanf donc je ne pense pas que mon code soit le problème :s

L'erreur vient vraiment de l'affectation, avant c'est bon, après c'est plus bon...

Si je veux vous envoyer mon code, pouvez vous me donner une adresse je vous prie ?

Car je ne vois vraiment pas mon erreur....

Je viens de comprendre :)

49 est le code décimal ascii de 1...................................

(j'avais oublié de préciser que comme un idiot j'ai déclarer lastelem un int x))

merci de votre aide.

je précise que j'ai modifié le code fournis pour éviter de passer par malloc, parce qu'en c++ il faut faire un cast pour convertir de void* en autre chose, et que tout ça ralenti assez.

malloc est couteux (free aussi un peu je suppose) et le cast n'y est pour rien. Je découvre petits à petits les sujets donnés à Prologin et dans les codes-source C, les énoncés suggèrent de passer par malloc. Je n'ai à présent pas vu l'intérêt de cela. Moi j'essaye de passer systématiquement par des tableaux static : c'est plus rapide, plus facile à coder et moins source de bogues. Pareillement, j'évite le plus possible d'utiliser des listes chainées, c'est des malloc+free à tout va et ça peut-être TRÈS couteux en temps d'exécution.

Répondre au sujet

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