Bonjour, mon post est un problème que je n'arrive pas à résoudre.
J'ai 2 séries de nombres, en les multipliants entre-eux (1 d'une série multiplié avec 1 autre de l'autre série) doit me donner un nombre prédifini en résultat (ou s'en approcher le plus possible).
Pour moi cela ressemble à de la combinaison, mais je ne trouve pas de solution à mon problème.
Exemple de problème concret :
SÉRIE 1 : 8 ; 14.5 ; 52 ; 100 ; 100 ; 100 ; 100 ; 4.6 ; 8 ; 29 ; 100 ; 100 ; 100 ; 5 ; 9 ; 32 ; 100 ; 100 ; 8.25 ; 14.75 ; 54 ; 100 ; 18.25 ; 33 ; 100 ; 50 ; 90 ; 100 ; 72
SÉRIE 2 : 11.5 ; 12.75 ; 26 ; 78 ; 100 ; 100 ; 100 ; 6.75 ; 6.50 ; 14 ; 42 ; 100 ; 100 ; 7.25 ; 7.50 ; 14 ; 45 ; 100 ; 11.5 ; 11.75 ; 24 ; 68 ; 24 ; 25 ; 50 ; 64 ; 66 ; 100 ; 27
Il faut que je trouve les couples pour ces séries qui font 188.5 ± 1.
Il faudrait donc un algorithme ou une formule qui calcule : 1er nombre de la série 1 × 1er nombre de la série 2, si c'est pas égal à 188.5±1 alors on continue, 1er nombre de la série 1 × 2ème nombre de la série 2 et à nouveau vérifier la condition, et ainsi de suite ...
Désolé je n'arrive pas trop à expliquer ce que je veux, j'espère que c'est assez clair.
À la fin il me faudrait les couples solutions de valeurs (série 1; série 2) qui donnent 188.5 ± 1.
Merci d'avance pour votre aide.
salut
bonjour,
j'imagine que les deux séries sont de longueur L ..
un algorithme de ce genre pourrait convenir, je suppose. A toi de l'améliorer.
n=0
entrer r
pour i allant de 1 à L faire
pour j allant de 1 à L faire
p = s1(i) * s2(j)
si r compris entre p-1 et p+1 alors
afficher s1(i), afficher s2(j), afficher p, n=n+1
fsi
fin pour
fin pour
afficher "nombre de couples trouvés " n
fin prog.
presque du python :
je ne traite pas l'initialisation des listes F1 et F2
prod = []
Imput (p) # résultat voulu
Input (e) # incertitude
For i = 0 To len (F1)
For j = 0 To len (F2)
If abs (p - F1(i) * F2(j)) <= e
prod.append ((F1(i), F2(j)))
Print prod
Bonjour carpediem, merci d'avoir répondu à mon problème. Cependant je suis débutant en Python.
Comment faudrait-il initialiser les listes en Python ?
Merci beaucoup
F1 = [8,14.5,52,100,100,100,100,4.6,8,29,100,100,100,5,9,32,100,100,8.25,14.75,54,100,18.25,33,100,50,90,100,72]
F2 = [11.5,12.75,26,78,100,100,100,6.75,6.50,14,42,100,100,7.25,7.50,14,45,100,11.5,11.75,24,68,24,25,50,64,66,100,27]
prod = []
Input (p) # résultat voulu
Input (e) # incertitude
For i = 0 To len(F1) #j'ai une erreur sur cette ligne (invalid syntax)
For j = 0 To len(F2)
If abs (p - F1(i) * F2(j)) <= e
prod.append ((F1(i), F2(j)))
Print prod
à la fin de la ligne For, il faut mettre un double point ": "
exemple :
for i in range(2,6):
idem pour l'instruction if
exemple :
if x == 5:
print("Gagné")
else:
print("Perdu")
Bien-sûr, mon code ressemble à ceci désormais :
F1 = [8,14.5,52,100,100,100,100,4.6,8,29,100,100,100,5,9,32,100,100,8.25,14.75,54,100,18.25,33,100,50,90,100,72]
F2 = [11.5,12.75,26,78,100,100,100,6.75,6.50,14,42,100,100,7.25,7.50,14,45,100,11.5,11.75,24,68,24,25,50,64,66,100,27]
p=118.5 # résultat voulu
e=1 # incertitude
prod = []
for i in range (0,len(F1)):
for j in range (0,len(F2)):
if abs(p - F1(i) * F2(j)) <e :
prod.append ((F1(i), F2(j)))
print (prod)
il ne s'agit pas de "tenter", mais tu dois écrire F1[i] et non F1(i)...
à chaque fois que tu fais référence à F1 ou F2..
ce script fonctionne :
F1=[4,5,2,6,7]
F2=[3,5,2,6,7]
p=34.5
e=1
prod = []
for i in range (0,len(F1)):
for j in range (0,len(F2)):
if abs(p - F1[i] * F2[j]) <=e:
print (F1[i]), (F2[j])
NB : je ne sais pas utiliser la table prod, dans laquelle il faudrait placer deux éléments à chaque insertion.. j'ai mis le print des couples à l'intérieur de la boucle.
Coquille de ma part, le code fonctionne enfin !
Merci beaucoup, je vais passer un bon dimanche haha
Une bonne soirée à vous
Leile :
l'instruction liste.append(objet) ajoute objet à la liste liste
ici j'ai choisi d'ajouter le couple (F1[i], F2[j]) lorsqu'il vérifie la condition adéquate
on peut évidemment les afficher les uns derrières les autres ...
effectivement j'ai oublié les deux points et les crochets ... merci d'avoir rectifié le tir
enfin pour les listes tu peux évidemment les initialiser au début soit en les définissant en extension soit avec une boucle
m = int(imput ("nombre de termes de la première liste"))
For i = 0 To m - 1
f = input ("terme n° ", i + 1)
F1.append (f)
n = int(input("nombre de termes de la deuxième liste"))
... # boucle identique
carpediem,
merci de ta réponse.. j'avais bien compris que tu remplissais la table prod avec les couples..
j'avais noté dans ton algorithme "prod.append ((F1[i], F2[j]))"
cette instruction m'a donné une erreur , qui dit qu'on ne peut insérer qu'un seul élément dans une occurence de la table prod ..
de plus, quand on exécutera le print de prod, comment les couples vont ils s'afficher ?
(Je ne connais ni ne pratique python.. ).
ha peut-être qu'une liste n'accepte pas des couples ...
oui il faut le rentrer comme une liste :
prod.append([F1[i], F2[j]])
merci de ta réponse.
Quand je demandais "comment vont-ils s'afficher" ? je parlais de la "mise en page".
En effet, les couples vont s'afficher en ligne, sans saut à la ligne à chaque élément..
à moins qu'il y ait une syntaxe particulière pour le saut à la ligne ?
merci aussi pour le site, mais je ne pense pas apprendre python : je connais déjà plusieurs langages de programmation, plus orientés gestion, il est vrai, et je ne prends plus de plaisir à en ajouter un.
Ce qui m'intéresse c'est l'algorithmique, la construction de l'algorithme, mais pas sa transcription, les syntaxes étant toutes différentes..
Bonne soirée.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :