gwlegion a écrit:@zygomatique:
ta resolution n'est pas tout a fait juste :
en prenant a<b (j'ai compris l'importance de ce fait), on calcule le nombre de b max, et on demare l'algo (en admetant que m n'est pas multiple de a ou b)
le probleme c'est qu'a un moment le reste sera suppieur a a, il faut tester a chaque boucle et en rajouter 1 si necessaire ...
avec quelques ajustements, je pense pouvoir pondre un truc qui marche...
Pourquoi tu dis ça zygomatique, tu as testé le programme pour émettre ce jugement?zygomatique a écrit:je ne suis pas sur que l'algo de Razes convienne car il faut trouver la distance minimale de f(x, y) à m soit par valeur inférieure soit par valeur supérieure (la valeur absolue)
par contre avec ton idée de matrice on peut être sur de déterminer les meilleurs solutions
si 0 < a < b et (p - 1)a < m < pa et (q - 1)b < m < qb alors il suffit de tester tous les couples (x, y) € [0, p] x [0, q] et calculer |ax + by - m|
C'est pour cela que je t'ai demandé dès le départ, est ce que tu cherche une solution ou toutes les solutions et tu m'as répondu "une solution".gwlegion a écrit:pour afficher tout les couples nA et nB ayant un reste optimal, il faudrais calculer tout les couples entre 0 et le nombre max.
du coup, on se rapprocherais de mon idee de matrice, puis de tri des resultats pas ordre croissant jusqu'a M...
d'ailleur, maintenant que j'y pense, on doit pouvoir se faire un document libreoffice qui fais ca
Read a, b, m
k = E(m/a)
ri = m - ka
rs = (k + 1)m - a
(u, v) = (k, 0)
(x, y) = (k + 1, 0)
For i = 0 To k
j = E[(m - ia)/b]
rit = m - ia - jb
rst = ia + (j + 1)b - m
If rit < ri
(u, v) = (i, j)
ri = rit
If rst < rs
(x, y) = (i, j + 1)
rs = rst
If ri < rs Then Write (u, v) Else Write (x, y)
Sub CalculerSomme()
A = ActiveWorkbook.Sheets("Feuil1").Cells(2, 2).Value
B = ActiveWorkbook.Sheets("Feuil1").Cells(3, 2).Value
M = ActiveWorkbook.Sheets("Feuil1").Cells(4, 2).Value
If (M <= A) Or (M <= B) Then
MsgBox "Le montant est inférieur au tarif"
Exit Sub
End If
If A < B Then
INVERSER = True 'Indicateur d'intervertion de A et B
C = A
A = B
B = C
End If
K = Int(M / A) 'Nombre maxi de A
R = M 'Initialisation Reste, Temporaire
i = 0 'Quantité; de; A, Temporaire“
j = 0 'Quantité; de; B, Temporaire; “
QA = 0 'Quantité; de; A, stocké“
QB = 0 'Quantité; de; B, stocké“
RMINI = M 'Initialisation Reste minimum, stocké”
Do While i <= K
j = Int(M / B)
R = M - j * B
If R < RMINI Then
QA = i
QB = j
RMINI = R
End If
i = i + 1
M = M - A
Loop
If INVERSER Then
Cells(8, 1) = QB
Cells(8, 2) = QA
Else
Cells(8, 1) = QA
Cells(8, 2) = QB
End If
Cells(8, 3) = RMINI
End Sub
a et b deux entiers non nuls donnés
m un entier
E = {ua + vb < m}
F = {xa + yb > m}
question : pour tout m a-ton m - max E = min F - m ?
gwlegion a écrit:bonjour.
voici mon probleme du moment
soit un couple ayant tout les deux des tickets restaurants ( A et B) de valeurs differents
Il me faut determiner combien je dois donner de A et de B pour approcher au plus pret le montant a payer.
apres, je compte en faire un programme... mais ca je me debrouillerais.
zygomatique a écrit:a et b deux entiers non nuls donnés
m un entier
E = {ua + vb < m}
F = {xa + yb > m}
question : pour tout m a-ton m - max E = min F - m ?
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 92 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :