Un programme compilé mais qui ne marche pas !

Fermé
weirstrass - 16 mars 2010 à 00:15
 weirstrass - 16 mars 2010 à 10:59
Bonjour,
J'ai écrit un programme en turbo pascal; lors de la compile, y a rien d'anormal mais quand je l'execute, rien ne se passe (la fenêtre s'ouvre mais le programme ne tourne pas) c'est un peu comme si il plantait.
j'ai écrit une suite de for x1:=0 to 3 do for x2:=0 to 3 do ...for x20:=0to 3 do
begin
if x1+x2+x3=10 then if x4+x5+x6=12 then ...if +x18+x19+x20=21 then
writln(x1,x2,...x20)
end;
end.

Enfin, quelque chose du genre, pour simplifier. En gros, j'ai 9 équation et 20 inconnues (chacune entiere comprises entre 0 et 3) et je veux faire afficher les 20-uplets solutions de ce système.

Alors, avec 10 inconnues et 3 équations, le programme tourne mais pas avec 20 inconnues et 9 équations !!
peut-être est-ce une écriture trop lourde ? et comment y remédier?
Merci de votre aide.

3 réponses

Bonjour

Avec 10 boucles de 0 à 3 imbriquées , ton programme faisait environ 1 million (4^10) de boucles
Avec 20 boucles imbriquées, ça en fait mille milliards. Il marche probablement, mais il faut seulement être un million de fois plus patient pour attendre la fin ^^
0
ok et connaitrais-tu un autre code pour faire tourner le programme plus rapidement ?
l'idéé, tu l'as comprise, est de tester tout les 20-uplets possibles dans un système d'équations ?
0
Non, je n'ai pas compris ce que tu cherches à faire.
En effet, quand je vois if x4+x5+x6=12 alors que ces trois nombres sont inférieurs ou égaux à 3, donc leur somme inférieure ou égale à 9, je me dis que je ne comprends pas tout
Si tes n-uplets doivent vérifier certaines conditions données, c'est très probablement possible de diviser le temps de calcul par un facteur astronomique (c'est vite fait dans les problèmes combinatoires) mais il faut une connaissance détaillée de ton cas pour tailler un algorithme sur mesures.
Quelqu'un d'autre aura peut-être du temps à y consacrer si tu exposes clairement le problème.
0
Voici exactement ce que je voudrais faire:

Je voudrais écrire le programme suivante:

j'ai 20 variables: x1,x2,x3,x4,x5, y1,y2,y3,y4,y5, z1,z2,z3,z4,z5, t1, ...,t5
Toutes prenant comme valeurs 0, 1, 2 ou 3 sauf x5, y5, z5 et t5 qui prennent 0, 1, 2, 3, 4, ou 5 comme valeurs.

Si 4x1+3.5x2+3.5x3+4x4+0.5x5 = 16.5
4y1+3.5y2+3.5y3+4y4+0.5y5= 20
4z1+3.5z2+3.5z3+4z4+0.5z5 = 21
4t1+3.5t2+3.5t3+4t4+0.5t5 = 21
x1+y1+z1+t1=5 et x2+y2+z2+t2 =5 et x3+y3+z3+t3 =5 et x4+y4+z4+t4 = 5 et x5+y5+z5+t5=5
alors afficher la listes des 20-uplets solutions en ligne avec si possible, en faisant des groupes de 5 (les xi, les yi, les zi et les ti séparés d'une cellule) pour plus de lisibilité

Merci

Configuration: Windows Vista / Firefox 3.5.8
0