Exemple #1
0
 public void ReinitialiserCombinaison()
 //Fonction permettant, quand on a fini une combinaison, de remettre un espace vide à chaque espace
 {
     for (int i = 0; i < Projets.Count(); i++)
     {
         Combinaison[i] = Eleves[0];
     }
 }
Exemple #2
0
 public void Repartir()
 {
     //On met un élève vide dans chaque espace que devra prendre un elève dans la combinaison
     //ça permet de voir si un elève a déjà été mis à la place en question
     for (int i = 0; i < Projets.Count(); i++)
     {
         Combinaison.Add(Eleves[0]);
     }
     TesterCombinaison(Eleves[1]);
 }
Exemple #3
0
        public bool VerifierComplet()
        {
            foreach (Personne eleve in Eleves)
            {
                if (eleve != Eleves[0])
                {
                    if (eleve.Affinite.Count() != 0)
                    {
                        foreach (Personne e in eleve.Affinite)
                        {
                            if (Projets[Combinaison.IndexOf(e)] != Projets[Combinaison.IndexOf(eleve)])
                            {
                                return(false);
                            }
                        }
                    }
                    int voeux = eleve.RecupererVoeux(Projets[Combinaison.IndexOf(eleve)]);
                    if (voeux < Seuil)
                    {
                        return(false);
                    }

                    if (!Combinaison.Contains(eleve))
                    {
                        return(false);
                    }
                }
            }
            //Attention à séparer mieux les tâches dans le prochain code
            for (int i = 0; i < Projets.Count() - 1; i++)
            {
                //Console.WriteLine(i);
                if (Combinaison[i] != Eleves[0])
                {
                    for (int k = 0; k < NbPlaces; k++)
                    {
                        if (Combinaison[i + k] == Eleves[0])
                        {
                            return(false);
                        }
                    }
                }
                i += 3;
            }
            return(true);
        }
Exemple #4
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];
                    }
                }
            }
        }
Exemple #5
0
        public int[,] ExtraireCsv(string lien)
        ///Permet d'extraire d'un fichier csv une matrice int[,]
        {
            int           i      = 0;
            StreamReader  reader = new StreamReader(lien);
            List <string> ligne  = new List <string>();;

            //Récupération des projets
            ligne.Add(reader.ReadLine());
            Projets = ligne[0].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

            //Récupération du nombre de places par projets
            ligne[0] = reader.ReadLine();
            string[] nbpp = new string[Projets.Count()];
            nbpp     = ligne[0].Split(new string[] { "," }, StringSplitOptions.None);
            ProjetsV = new int[Projets.Count()];
            int nombre;

            for (int j = 1; j < Projets.Count() + 1; j++)
            {
                //MessageBox.Show("RAS a j=" + j+"  nbpp= "+ nbpp[j]);
                if (nbpp[j] != "")
                {
                    ProjetsV[j - 1] = 1;
                }
            }
            //AfficherNbParProjet();
            //Récupération des voeux
            do
            {
                ligne.Add(reader.ReadLine());
                i++;
            }while (ligne[i] != null);


            int[,] matrice = new int[i - 1, Projets.Count()];
            string[] voeux  = new string[Projets.Count()];
            string[] eleves = new string[i - 1];
            for (int x = 1; x < i; x++)
            {
                voeux = ligne[x].Split(new string[] { "," }, StringSplitOptions.None);

                eleves[x - 1] = voeux[0];
                for (int y = 1; y < Projets.Count() + 1; y++)
                {
                    //MessageBox.Show(x+" "+y+" "+voeux[y]);
                    if (int.TryParse(voeux[y], out nombre))
                    {
                        matrice[x - 1, y - 1] = nombre;
                    }

                    else
                    {
                        matrice[x - 1, y - 1] = 0;
                    }
                    //MessageBox.Show("RAS à x = " + x+" et y = "+y);
                }
            }
            //AfficherMatrice(Conversion(matrice));
            //AfficherListe("Eleves : ", eleves);
            //AfficherListe("Projets : ", Projets);
            //AfficherListe("Nombre par projet : ",ProjetsV.Select(x => x.ToString()).ToArray());
            Eleves = eleves;
            return(matrice);
        }