Ejemplo n.º 1
0
        public double[] CalculProbas()
        {
            // http://members.ozemail.com.au/~dekker/robot.pdf

            double[] probas = new double[NbEntrees];
            Random   rnd    = new Random();

            // commence par classer les valeurs
            double vx = Valeurs.Min();
            double vz = Valeurs.Max();

            // calcul du paramètre q
            double[] q = new double[NbEntrees];
            for (int j = 0; j < Valeurs.Length; j++)
            {
                q[j] = (0.03 + Valeurs[j] - vx) / (0.03 + vz - vx);
                q[j] = q[j] * q[j];
            }

            // calcul des probas
            double denominateur = q.Sum();

            for (int j = 0; j < NbEntrees; j++)
            {
                probas[j] = q[j] / denominateur;
            }

            Helper.AfficherVecteur(probas, "Probas:");

            return(probas);
        }
Ejemplo n.º 2
0
 public Carte this[Couleurs col, Valeurs val]
 {
     get
     {
         Carte c = null;
         for (int i = 0; i < _mainDeck.Count; i++)
         {
             if (_mainDeck[i].Couleur == col && _mainDeck[i].Valeur == val)
             {
                 c = _mainDeck[i];
                 _mainDeck.Remove(c);
             }
         }
         return(c);
     }
     set
     {
         Carte c = null;
         foreach (Carte carte in _mainDeck)
         {
             if (carte.Couleur == col && carte.Valeur == val)
             {
                 c = carte;
             }
         }
         if (c is null)
         {
             _mainDeck.Add(new Carte()
             {
                 Couleur = col, Valeur = val
             });
         }
     }
 }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            // impossible de faire  : int as = 24; car le nom donné à la variable est un mot dit réservé.
            // 2 solutions :
            // Bonne pratique : changer le nom ou du moins sa case.
            int As = 24;
            // Mauvaise pratique : conserver le nom, mais retiré la protection des mots réservé avec un @
            int @as = 24;

            // Il en va de même pour les enums
            Valeurs test = Valeurs.@as;
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Permet de formater une requête SQL en injectant de manière sécurisée les valeurs de ses parties variables
 /// </summary>
 /// <param name="Requete">Requête SQL</param>
 /// <param name="Valeurs">Valeurs des parties variables de la requête</param>
 /// <returns>Requête SQL après injection</returns>
 public static string FormaterEnSql(string Requete, params object[] Valeurs)
 {
     try
     {
         return(string.Format(Requete, Valeurs.Select(Valeur => ValeurEnSql(Valeur)).ToArray()));
     }
     catch (Exception Erreur)
     {
         System.Diagnostics.Debug.WriteLine(string.Format(
                                                "\nMyDB.FormaterEnSql({0}{1}) a échoué :\n{2}\n",
                                                Requete,
                                                string.Join("", Valeurs.Select(Valeur => string.Format(", {0}", Valeur))),
                                                Erreur.Message));
         return("");
     }
 }
Ejemplo n.º 5
0
        public AttributVM(Attribut attribut)
        {
            Attribut = attribut;

            AddValeur = new RelayCommand(() =>
            {
                if (Pere != null)
                {
                    if (SelectedValeurPere == null)
                    {
                        return;
                    }
                    Attribut.Valeurs.Add(new Valeur()
                    {
                        Pere = SelectedValeurPere
                    });
                }
                else
                {
                    Attribut.Valeurs.Add(new Valeur());
                }
                IoCContainer.Get <ModelContainer>().SaveChanges();
                OnPropertyChanged(nameof(Valeurs));

                OnPropertyChanged(nameof(SelectedValeur));
            });

            DeleteValeur = new RelayCommand(() =>
            {
                if (SelectedValeur == null)
                {
                    return;
                }
                Attribut.Valeurs.Remove(SelectedValeur.Valeur);
                IoCContainer.Get <ModelContainer>().SaveChanges();
                OnPropertyChanged(nameof(Valeurs));
                SelectedValeur = Valeurs.Last();
                OnPropertyChanged(nameof(SelectedValeur));
            });
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Constructeur par défaut
 /// </summary>
 public GMBD()
 {
     m_BD            = new MyDB("iziel_connector", "wJ9VFDrH", "iziel_warhammer", "mysql-iziel.alwaysdata.net");
     m_BD.SurErreur += (ConnexionEmettrice, MethodeEmettrice, RequeteSql, Valeurs, MessageErreur) =>
     {
         System.Diagnostics.Debug.WriteLine(string.Format("\nERREUR SQL :\nMéthode : {0}\nRequête initiale : {1}\nValeurs des {2} parties variables : {3}\nRequête exécutée : {4}\nMessage d'erreur : {5}\n",
                                                          MethodeEmettrice,
                                                          RequeteSql,
                                                          (Valeurs != null) ? Valeurs.Length : 0,
                                                          ((Valeurs != null) && (Valeurs.Length >= 1)) ? "\n* " + string.Join("\n* ", Valeurs.Select((Valeur, Indice) => string.Format("Valeurs[{0}] : {1}", Indice, (Valeur != null) ? Valeur.ToString() : "NULL")).ToArray()) : string.Empty,
                                                          MyDB.FormaterEnSql(RequeteSql, Valeurs),
                                                          MessageErreur));
     };
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Permet d'exécuter une requête d'action
        /// </summary>
        /// <param name="Requete">Requête SQL à exécuter (doit être de type INSERT, UPDATE ou DELETE)</param>
        /// <param name="Valeurs">Valeurs des parties variables</param>
        /// <returns>Objet décrivant le résultat de l'opération</returns>
        public IResultatExecution Executer(string Requete, params object[] Valeurs)
        {
            string MessageErreur = string.Empty;

            for (int NombreEchecs = 0; NombreEchecs < 2; NombreEchecs++)
            {
                MyDB ConnexionUtilisee = null;
                try
                {
                    // Vérification de l'état théorique de la connexion
                    if (!EstConnecte)
                    {
                        throw new Exception("Pas de connexion établie au serveur MySql");
                    }
                    // Vérification qu'il s'agit bien d'une requête d'action
                    if (EstRequeteConsultation(Requete))
                    {
                        throw new Exception("Une requête de consultation ne peut pas faire l'objet de la méthode MyDB.Executer()");
                    }
                    // Création d'une nouvelle connexion si il y a une lecture en cours
                    if (EstEnCoursDeLecture)
                    {
                        ConnexionUtilisee = new MyDB(this);
                        if (!ConnexionUtilisee.EstConnecte)
                        {
                            throw new Exception("Aucune nouvelle connexion n'a pu être établie vers le serveur MySql");
                        }
                    }
                    else
                    {
                        ConnexionUtilisee = this;
                    }
                    // Création de la commande SQL
                    MySqlCommand Commande = ConnexionUtilisee.CreerCommande(Requete, Valeurs);
                    int          NombreEnregistrementsAffectes = Commande.ExecuteNonQuery();
                    if (EstRequeteInsertion(Requete))
                    {
                        if (ConnexionUtilisee != this)
                        {
                            ConnexionUtilisee.Dispose();
                        }
                        return(new ResultatExecution(NombreEnregistrementsAffectes, Commande.LastInsertedId));
                    }
                    else
                    {
                        if (ConnexionUtilisee != this)
                        {
                            ConnexionUtilisee.Dispose();
                        }
                        return(new ResultatExecution(NombreEnregistrementsAffectes));
                    }
                }
                catch (Exception Erreur)
                {
                    System.Diagnostics.Debug.WriteLine(string.Format(
                                                           "\nMyDB.Executer({0}, {1}) a échoué :\n{2}\n",
                                                           Requete,
                                                           string.Join("", Valeurs.Select(Valeur => string.Format(", {0}", Valeur))),
                                                           Erreur.Message));

                    if ((ConnexionUtilisee != null) && (ConnexionUtilisee != this))
                    {
                        ConnexionUtilisee.Dispose();
                    }
                    // Sauvegarde du message d'erreur au cas où il faudrait le retourner
                    MessageErreur = Erreur.Message;
                    // Test de l'état de connexion
                    if ((EtatConnexionConnu != EtatConnexion.Perdu) && (!EstConnecte || TesterConnexion()))
                    {
                        if (SurErreur != null)
                        {
                            SurErreur(this, MethodeExecutantRequeteSql.Enumerer, Requete, Valeurs, Erreur.Message);
                        }
                        break;
                    }
                    // En cas de perte de connexion, on tente une fois de se reconnecter
                    if (!SeConnecter())
                    {
                        if (SurErreur != null)
                        {
                            SurErreur(this, MethodeExecutantRequeteSql.Enumerer, Requete, Valeurs, Erreur.Message);
                        }
                        break;
                    }
                    // En cas de réussite de la re-connexion, on boucle une seconde fois sur la tentative d'exécution de cette lecture
                }
            }
            return(new ResultatExecution(MessageErreur));
        }