Probleme exo prologin - Java - Programmation
Marsh Posté le 09-10-2019 à 18:19:56
Nat1329 a écrit : Bvoici l'énoncé. https://prologin.org/train/2017/qua [...] 842#submit |
Bonjour,
Ce n'est pas ce que je lis dans l'énoncé !
Le client demande UNE paire de skis à laquelle est associée UNE taille.
Les entrées sont le nombre de skis en réserve, la liste des tailles des skis en réserve et enfin la taille demandée. Cela t'évitera de te mélanger les pinceaux déjà.
Je n'ai par contre pas compris la contrainte sur la liste Si (liste des tailles dispos). Est-ce la longueur de la liste, pas de sens puisqu'elle ne peut pas être plus longue que le nombre de skis en stock ? Est-ce la taille des skis, ça ne fait pas très réaliste ?
Sinon pour ton algo :
Code :
|
Code :
|
Code :
|
Il n'y a rien qui te choque dans ton test d'égalité ?
Marsh Posté le 09-10-2019 à 18:50:11
Salut,
merci pour la réponse. Dans mon test d'égalité, je ne vois pas mais peut etre tu pourras me renseigner?
Marsh Posté le 09-10-2019 à 19:15:12
Dans ton test d'égalité, remplace ta variable "min" par son calcul.
Marsh Posté le 09-10-2019 à 19:27:58
Par son calcul? c'est a dire? en fait je prends la valeur min pour la comparer de nouveau et recuperer sa la plus petite valeur dans pos2.
un exemple 46 est la taille demandé
12 37 50 42 25 sont les tailles reservé
je veux récuperer la taille la plus proche dans la liste de taille reservé.
je fais donc la soustraction(en valeur absolu) de 46 avec chacune des valeurs du tableau. ca donne 34 9 4 4 25. j'ajoute ca dans un nouveau tableau (nommé tab ici) puis je cherche le minimum qui est ici 4.
comme il peut y avoir plusieurs fois le meme minimum,
je soustrais la taille de nouveau avec toutes les valeurs du tableau
12 37 50 42 25 ca donne 34 9 -4 4 21 je recupere ensuite la position pour min = 4 d'ou la condition qui correspond à 42!
Marsh Posté le 09-10-2019 à 19:42:08
Tu utilises un cas particulier où tu as deux tailles à la même distance de la taille demandée, refait le même raisonnement avec qu'une seule taille qui colle. Parfois ça fonctionnera, et d'autres non, par exemple si tu retires la taille 42 de ta liste ça ne fonctionnera pas.
Pour comprendre ton erreur, il faut regarder ton égalité, en remplaçant "min" par "tab[i]" puis en remplaçant "tab[i]" par son calcul. (tout est dans les 3 lignes que j'ai cité)
Marsh Posté le 09-10-2019 à 19:56:31
Ah oui autant pour moi! Jai corrigé l'erreur ca compile et ça fonctionne merci beaucoup!
Marsh Posté le 09-10-2019 à 20:34:13
Par contre, en corrigeant, tu enlèves le traitement du cas particulier où deux tailles sont à la même distance de la taille demandée.
Je ne sais pas comment tu as corrigé, mais n'oublie pas ce cas où il faut garder la taille la plus petite !
Sinon, tu peux aussi optimiser ton code, en deux boucles tu dois pouvoir t'en sortir.
Marsh Posté le 09-10-2019 à 22:03:48
salut!
alors mon programme marche mais c'est bien ce que je pensais il marche une fois sur 2 en fait quand ya deux valeur minimum il ne marche plus donc oui ca a corriger un probleme mais dans le cas des deux valeurs il ne marche plus du coup tu as pas une solution pour régler ca?
oui bien sur j'optimise toujours quand le programme fonctionne pour le moment je cherche à le faire fonctionner et ensuite effectivement je limiterai les boucles
Marsh Posté le 09-10-2019 à 22:15:51
Test passé !
0,05s 22,7 Mio Test passé !
0,21s 43,4 Mio Test échoué : votre programme s'est exécuté correctement, mais :
Sortie standard attendue :
101496234
Sortie standard du programme :
0
Test ignoré.
Test ignoré.
Test ignoré.
Test ignoré.
Test ignoré.
Test ignoré
voila ce que j'obtiens avec la premiere version
Marsh Posté le 10-10-2019 à 18:49:45
Parfois optimiser en cours ça aide à voir plus clair, multiplier les boucles c'est parfois un risque d'en perdre la tête.
Tu peux fusionner tes deux dernières boucles, il te suffit de garder dans une variable la position de ton itération quand tu trouves un nouveau minimum.
Ta recherche de minimum fonctionne très bien, néanmoins ce n'est pas que le minimum que tu souhaites trouver, tu veux le minimum en valeur absolue et le minimum dans le cas où tu as une égalité. Tu dois trouver le moyen de tester ces deux cas en même temps !
Au final, tu peux tout faire en une seule boucle, il te suffit de regarder à chaque taille ajoutée dans la liste des tailles en réserve, si la nouvelle taille est la plus proche (par rapport aux précédentes) ou non de celle désirée par le client. Si elle est la plus proche ou à égalité avec une autre tu gardes en mémoire la taille la plus faible.
Marsh Posté le 09-10-2019 à 13:05:02
Bonjour, je suis en train de faire un exercice de prologin dont voici l'énoncé. https://prologin.org/train/2017/qua [...] 842#submit
Le but est simple un utilisateur entre un nombre de paire de ski désiré, puis leur taille respectif et enfin la liste des tailles en stocks.
si un utilisateur entre 5 (5paire de ski désiré), 46(la taille de paire de ski qu'il désire), enfin la liste des tailles de paires dispo 12 37 50 42 25
le but est de trouver la taille de paire dispo la plus proche de 46, ici ce serait donc 50 et 42 car 46 - 50 = -4 46 - 42 = 4 mais si jamais il y a egalité il faut choisir la plus petite valeur on aura donc ici 42.
Mon programme est le suivant mais ne pas passe le deuxieme test, pos2 ne prend jamais la valeur qu'il devrait à la fin du programme. Quel est le probleme? merci
Message édité par Nat1329 le 09-10-2019 à 13:06:29