Problème de logique...pourtant c'est tout con, j'en suis sur [Résolu]

Signaler
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009
-
Horfee
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009
-
Voilà en fait je dois réaliser un calcul :

je dispose d'une étude. Une étude comporte X avions. chaque avions comporte X moteurs.
On arrive a ce shéma :
       A1                           A2                         A3
   /     |       \                /      |      \               /      |      \
M1   M2   M3        M1   M2   M3       M1   M2   M3

Chaque moteur comporte des informations que je dois fusionner. Pour simplifier, on va dire que chaque moteur comporte un entier y.
Il faut ensuite que je calcule les différentes simulations : une simulation est l'addition de y de chaque moteur : je dois pour celà prendre y du moteur A1M1, que je l'ajoute au y de A2M1 et au y de A3M1, etc.
Et il faut ke je calcule ca pour chaque moteur.
Donc :

y1 = A1M1.y + A2M1.y + A3M1.y
y2 = A1M2.y + A2M1.y + A3M1.y
y3 = A1M3.y + A2M1.y + A3M1.y

y4 = A1M1.y + A2M2.y + A3M1.y
y5 = A1M2.y + A2M2.y + A3M1.y
y6 = A1M3.y + A2M2.y + A3M1.y

y7 = A1M1.y + A2M3.y + A3M1.y
y8 = A1M2.y + A2M3.y + A3M1.y
y9 = A1M3.y + A2M3.y + A3M1.y

y10 = A1M1.y + A2M1.y + A3M2.y
y11 = A1M2.y + A2M1.y + A3M2.y
y12 = A1M3.y + A2M1.y + A3M2.y

y13 = A1M1.y + A2M2.y + A3M2.y
y14 = A1M2.y + A2M2.y + A3M2.y
y15 = A1M3.y + A2M2.y + A3M2.y

y16 = A1M1.y + A2M3.y + A3M2.y
y17 = A1M2.y + A2M3.y + A3M2.y
y18 = A1M3.y + A2M3.y + A3M2.y

y19 = A1M1.y + A2M1.y + A3M3.y
y20 = A1M2.y + A2M1.y + A3M3.y
y21 = A1M3.y + A2M1.y + A3M3.y

y22 = A1M1.y + A2M2.y + A3M3.y
y23 = A1M2.y + A2M2.y + A3M3.y
y24 = A1M3.y + A2M2.y + A3M3.y

y25 = A1M1.y + A2M3.y + A3M3.y
y26 = A1M2.y + A2M3.y + A3M3.y
y27 = A1M3.y + A2M3.y + A3M3.y

Vous me suivez ?
Bon ca sachant que le nombre d'avions n'est pas connu au moment de la compilation, mais seulement au moment de l'execution (ainsi que le nombre de moteurs pour chaque avions)
On peut quand meme connaitre le nombre de resultats ( ici => 27 : Avion1.nbMoteur * Avion2.nbMoteur * ....)

12 réponses

Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009

j'ai trouvé la réponse... et non je n'ai pas programmez ca n'importe comment... et ton z=3 n'a rien avoir... dans le code que tu m'a donné tu fais 3 boucle for, donc s'il fallait que je suive ta méthode avec 20 avions, il me faudrait 20 boucles...
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
Salut,
int combinaison Math.Pow(x,y); // ou x le nombre de moteur par avion (ici apparement tjrs 3) et y le nombre d'avion.

Dans ton cas:
avec 3 avions on aurait Math.Pow(3,3) = 27;
Autres exemples :
avec 2 avions on a Math.Pow(3,2) = 9;
avec 4 avions on a Math.Pow(3,4) = 81;

Si chaque avion peut avoir 4 moteurs et qu'on a 2 avions on a Math.Pow(4,2) = 16;
Evidemment, la formule ne fonctionne que si le nombre de moteur par avion est constant.

VC# forever
=13319
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009

non le nombre de moteurs de chaque avion est indépendamment...mais ca c'était pas compliqué...
le truc que j'arrive pas a faire c'est générer la séquence des moteurs à considéré lor du calcul (style un peu une table de verité) :
0,0,0
0,0,1
0,0,2
0,0,3
0,1,0
0,1,1
0,1,2
0,1,3
1,0,0
...
(dans ce cas là le 3eme avion a 4 moteurs, le 2nd en a 2 et le premier en a...(2))
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
Ben tu fais trois boucles et c'est terminé....

VC# forever
=13319
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
int
x = 2;


int
y = 4;


int
z = 3;


for
(

int
i = 0; i < x; i++)
{
  

for
(

int
j = 0; j < y; j++)
   {
     

for
(

int
k = 0; k < z; k++)
      {
        

Console
.WriteLine(

"{0},{1},{2}"
, i, j, k);
      }
   }
}






0,0,0
0,0,1
0,0,2
0,1,0
0,1,1
0,1,2
0,2,0
0,2,1
0,2,2
0,3,0
0,3,1
0,3,2
1,0,0
1,0,1
1,0,2
1,1,0
1,1,1
1,1,2
1,2,0
1,2,1
1,2,2
1,3,0
1,3,1
1,3,2



















VC# forever




=13319
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009

nan c pas bon, tu suppose qu'il y a 3 avions...or il se peut qu'il y en ais 20...
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
42
Avec une méthode recursive ca doit etre faisable non ?

Mx
MVP C# 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
Et alors? J'ai posé z= 3 pour faire un exemple pratique!
Si tu as bien fait les choses, tes avions sont dans une collection, et tu peux donc sans autre savoir combien y'en a en faisant maCollection.Count.
Evidemment, si maintenant tu as programmé ça n'importe comment à la va-vite tu vas pas t'en sortir... Dans ca cas là, personne ne pourra rien pour toi.

VC# forever
=13319
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
42
Bon, moi j'avais suivi une mauvaise piste je pense :p

Par contre, si tu peux nous donner ta solution, ce serait sympa. Histoire que ca puisse resservir

Mx
MVP C# 
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009

//ok

//cals --> liste des avions
//nbSimul --> suffisament explicite (nombre de simulation : ds les ex ci dessus, nbSImul vaudrait 27)
//--------------------------

int[][] listes = new int[cals.Length][];
int nbMoteurPrec = 1;

for(int i = cals.Length - 1; i >= 0; i--)
{
    listes[i] = new int[nbSimul];

    for(int j = 0; j < nbSimul; j++)
        listes[i][j] = (int)Math.Floor( (j / nbMoteurPrec)%cals[i].calendriers.Count);
   
    nbMoteurPrec = cals[i].calendriers.Count;
}

// dans listes on obtient donc la liste
/*

[ 0 , 0 , 0 ]
[ 0 , 0 , 1 ]
...
*/
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009

je suis en train de tester...mais si jms vous voyez que ca ne marche pas a tous les coups, ou qu'il y a plus simple, je suis preneur !!!
Messages postés
188
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
10 août 2009

ah ouais aussi le cals[i].calendriers represente les moteurs de chaque avion