Topic de TopicNorman7 :

Des kheys chauds en info/algorithmie/C ?

  • 1

Yo les kheys :hap:
Je suis en train de m'entrainer en C sur le site France-IOI pour ceux qui connaissent. Je suis arrivé au chapitre efficacité temporelle et je bloque sévère sur un exercice. Le problème doit venir des limitations présentes dans l'énoncé

https://image.noelshack.com/fichiers/2024/06/2/1707241464-enonce.jpg https://image.noelshack.com/fichiers/2024/06/2/1707241520-enonce2.jpg

voilà, à partir de là j'ai élaboré un code, qui passe 18 tests sur les 20 requis pour valider l'exercice.
https://image.noelshack.com/fichiers/2024/06/2/1707241640-resultat.jpg

voici mon code :
https://image.noelshack.com/fichiers/2024/06/2/1707241755-code.jpg

Si jamais des kheys voient comment améliorer ça niveau mémoire, ou changer complètement l'algo je serai vraiment reconnaissant :oui:

Merci d'avance pour vos réponses :cimer:

Déplace le free juste après le malloc, t'auras plus de problèmes de mémoire :ok:

Le 06 février 2024 à 18:53:11 :
Déplace le free juste après le malloc, t'auras plus de problèmes de mémoire :ok:

ayaa avec de l'alcool dans le sang je l'ai déplacé sans réfléchir :rire:

Le 06 février 2024 à 19:30:47 :

Le 06 février 2024 à 18:53:11 :
Déplace le free juste après le malloc, t'auras plus de problèmes de mémoire :ok:

ayaa avec de l'alcool dans le sang je l'ai déplacé sans réfléchir :rire:

Ahahahahaha :rire:

Bah t'as testé que l'allocation dynamique se faisait bien (que Calloc ne renvoie pas un pointeur nul) ?

Ah et si c'est la mémoire qui fait défaut je pense que plutôt que de coder sur un bool tu peux coder sur un bit.

Ça changera pas beaucoup les perf je pense, mais tu gagnera en mémoire d'un facteur 10 :oui:

Ça risque d'être un chouilla plus délicat à écrire

Merci khey :oui:

Je suppose qu’elle ne pointe pas vers null parce que les 18 premiers tests passent :( ça aurait crash avant non ?

J’ai essayé avec un tableau de bits aussi ! Au final ça garde le même résultat : les mêmes 18 tests marchent, mais 2 foirent, j’hésite à envoyer le problème à un de mes profs parce que je comprends franchement pas

Le 07 février 2024 à 11:29:18 :
Merci khey :oui:

Je suppose qu’elle ne pointe pas vers null parce que les 18 premiers tests passent :( ça aurait crash avant non ?

J’ai essayé avec un tableau de bits aussi ! Au final ça garde le même résultat : les mêmes 18 tests marchent, mais 2 foirent, j’hésite à envoyer le problème à un de mes profs parce que je comprends franchement pas

Tu peux pas avoir un retour à chacun des 20 tests pour pouvoir déboguer ? Car j'avoue que sans avoir un moyen de déboguer c'est compliqué de voir ce qui ne va pas :noel: ou alors c'est un test des cas particuliers

Quand t'allais un tableau de bit tu allouais bien un tableau 8 fois plus petit (+1 octet en rab')

Malheureusement c’est des tests en aveugle, je n’ai aucune idée de ce que ça teste :(

Euh oui il me semble :hap:

test déjà le retour de ton calloc et quitte ton programme si le pointeur retourné est null lors du 18 et 19e test, si c'est un problème d'allocation tu en auras le cœur net vu que le retour sera différent :hap:

vu que tu n'as pas malheureusement d'autres retours possible pour débogage tente peut-être de placer des sorties de ton programme en plein milieu de l'algo, pour déterminer à quel ligne se situe le dépassement ?

Très bien :oui: je m’en charge dès que je rentre chez moi :cimer:

okay du coup, j'ai ajouté

if (presence == NULL) {
printf("Erreur: Mémoire insuffisante\n");
return 1;
}

et relancé les tests, cela ne change rien et ne me donne pas plus d'informations
Le problème est que je ne peux pas lancer les tests individuellement, c'est un bouton unique qui les lance tous, sans donner plus de précision :(

  • 1

Données du topic

Auteur
TopicNorman7
Date de création
6 février 2024 à 18:50:51
Nb. messages archivés
16
Nb. messages JVC
13
En ligne sur JvArchive 102