Exemplo n.º 1
0
        public void CalculerNote()
        {
            int           somme = 0;
            List <double> notes = new List <double>();

            foreach (Personne e in Combinaison)
            {
                if (e != Eleves[0])
                {
                    int    place  = Combinaison.IndexOf(e);
                    string projet = Projets[place];
                    int    voeux  = e.RecupererVoeux(projet);
                    somme += NbProjet - voeux;
                    notes.Add(voeux);
                }
            }
            double moyenne = Convert.ToDouble(somme) / (Eleves.Count() - 1);
            double s       = CalculerEcartType(moyenne, notes);
            double note    = somme - s;

            if (note >= Max)
            {
                AfficherCombinaison(note);
                Max = note;
            }
        }
Exemplo n.º 2
0
        public void TesterCombinaison(Personne eleve)
        //Fonction recursive permettant de tester toutes les possibilités
        {
            int index = Eleves.IndexOf(eleve);

            foreach (string p in eleve.Projets)
            {
                int indexP = Projets.IndexOf(p);
                //Comme va être automatiquement pris seulement le premier projet de la liste quand plusieurs projet sont en fait le même, on regarde si les autres sont libre
                if (Combinaison[indexP] != Eleves[0])
                {
                    bool present = false;
                    int  i       = 0;
                    while ((present == false) && (i < NbPlaces) && (indexP + i < Projets.Count() - 1))
                    {
                        i++;
                        if ((Projets[indexP] == Projets[indexP + i]) && (Combinaison[indexP + i] == Eleves[0]))
                        {
                            present = true;
                            indexP += i;
                        }
                    }
                }

                if (Combinaison[indexP] == Eleves[0])
                {
                    //Condition d'arret de la recursivité : Si on a plus d'élèves à traiter en stock
                    Combinaison[indexP] = eleve;
                    if (index + 1 >= Eleves.Count())
                    {
                        if (VerifierComplet())
                        {
                            CalculerNote();
                        }
                        Combinaison[indexP] = Eleves[0];
                    }
                    else
                    {
                        TesterCombinaison(Eleves[index + 1]);
                        Combinaison[indexP] = Eleves[0];
                    }
                }
            }
        }