Bonjour, j'ai un dm en maths avec le problème de la page 273 du manuel Math'x.
Le problème est tel que :
Un soir dans une auberge s'arrêtent plusieurs diligence. Des hommes et des femmes, moins nombreuse, s'attablent. Chaque homme doit payer 19 sous et chaque femme 13 sous. Sachant qu'à la fin du repas, l'aubergiste a récolté exactement 1000 sous, retrouvez combien d'homme et de femme ont mangé à l'auberge ce jour là ?
Donc on a 19x+13y=1000 avec x>y.
Alors pour la résolution j'ai d'abord trouvé que c'était une fonction : 19x+13y-1000=0 donc on a l'équation cartésienne suivante : y=(-19x+1000)/13 jusque là tout va bien. Ensuite je mets cette équation dans la fonction Table de ma calculatrice et j'obtiens comme seul résultat entier où x>y et 19x+13y=1000 : x=41 et y=17. Pas de soucis les résultats corroborent avec l'équation. Seulement c'est bien trop peu et compliqué à justifier dans mon dm. Je cherche donc à créer un algo pour résoudre l'équation et là je bloque :
Mon algo serait (avec la casio graph 35+) :
"X=nombre d'hommes"
"Y=nombre de femmes"
While 19x*13y≠1000
RanInt#(30,50)->x
RanInt#(0,20)->y
While end
If 19x+13y=1000
Then (afficher x)
(afficher y)
IfEnd
J'exécute le programme qui cherche pendant longtemps sans afficher aucuns résultats... Besoin d'aide, c'est pour demain. (':
Bonsoir
déja tu as écrit un multiplié à la place d'un plus
ensuite quelle idée un peu farfelue de tirer au sort des valeurs (la durée pour que le programme tombe par hasard sur la solution est indéterminée)
au lieu de rechercher systématiquement avec les valeurs successives x = 0, 1, 2, 3 ...
(ou y = 0, 1, 2...)
et finalement il y a un problème de principe dans ton algorithme :
si il trouve (par hasard) une solution qui a x < y il s'arrête sans rien dire et n'en cherche pas d'autre.
(ce qui serait avec l'espoir de tomber par hasard sur une solution qui a enfin x > y)
l'algorithme (brutal) serait donc plutôt le suivant
pour x de 0 à 1000/19 (la valeur maximale de x avec y = 0, on essaye systématiquement toutes ces valeurs de x)
calculer y = (1000-19x)/13
si y est un nombre entier (si sa partie fractionnaire est nulle)
et si x > y
alors afficher la solution x, y
fin pour
à traduire dans ton langage préféré.
hum.
"si il trouve (par hasard) une solution qui a x < y"
en fait ça ne se produit pas parce que tes bornes de tirages au sort de x et y ont été choisies en fonction de la solution que tu connaissais déja.
à quoi pourrait donc servir un algorithme si on connait déja la solution ??? inutile de la chercher puisqu'on la connait !!!
un algorithme qui servirait à quelque chose devrait ne pas tenir compte qu'on connait déja la solution !!
mais la chercher
donc rien ne permet de restreindre x et y aux valeurs que tu as fixées
tu pourrais tirer au sort x entre 1 et 1000/19 (donc entre 1 et 52)
puis y entre 0 et x-1 pour garantir 0 ≤ y < x
(ou x entre 2 et 52 et y entre 1 et x-1 si on suppose que x et y n'auraient pas le droit d'être nuls et garantir 1 &le y < x)
Bonjour, pour commencer merci de la réponse (même si j'ai finalement rendu mon dm) (:
En effet j'ai multiplié mais c'était seulement une erreur de notage, c'était un + sur la calculatrice.
Pour l'idée c'est juste que c'était trop long de tester 19x+13y=1000 avec plein de valeur pour x et y
Pour le problème de principe, c'est seulement que je ne sais pas trop comment avoir forcément des réponses avec x>y par contre il est vrai que je n'avais pas pensé à faire un algorithme avec "pour" j'ai plutôt pensé à "tant que", mais maintenant je saurais dans quel condition utiliser "pour" merci (:
En fait je connaissais déjà la réponse mais comme je l'ai dit ça me suffisait pas pour justifier je trouve, et puis j'aime pas justifier sans pouvoir montrer comment j'ai fait, du coup j'ai fait un algo.
Je n'avais pas pensé a faire comme vous le dites pour 1<x<1000/19 et 0<y<x et je dois avouer que j'aurais du faire ainsi mais c'est trop tard (':
Quoi qu'il en soit merci de la réponse (:
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :