Esempio n. 1
0
 // Transforme le verbe en un verbe à l'infinitif.
 public static void ToInfinitive(ref Verb verbe)
 {
     if (verbe.Nature == "verbe conjugué")
     {
         verbe = new InfinitiveVerb(verbe.Action, verbe.Group, verbe.AuxAvoir, verbe.AuxEtre, verbe.NonPronominale,
                                    verbe.Pronominale, verbe.Transitif, verbe.Intransitif);
     }
     // Sinon, on ne fait rien car le verbe est déjà à l'infinitif.
 }
Esempio n. 2
0
        public static void Test_Verbe()
        {
            // MINI PROGRAMME DE TEST POUR LA CONJUGAISON DES VERBES
            Verb   verbe;
            string temps;
            string mode;
            string type;
            string res = "";

            Console.WriteLine(" 1. Je veux entrer des verbes à l'infinitif\n 2. Je veux entrer des verbes conjugués");
            if (Console.ReadLine() == "1")
            {
                type = "verbe infinitif";
            }
            else
            {
                type = "verbe conjugué";
            }

            Console.WriteLine();

            while (true)
            {
                temps = "";
                mode  = "indicatif";
                res   = "";

                Console.WriteLine("Verbe ?\t");
                if (type == "verbe infinitif")
                {
                    verbe = new InfinitiveVerb(Console.ReadLine());
                }
                else
                {
                    verbe = new ConjugatedVerb(Console.ReadLine());
                }

                while (res != "autre")
                {
                    Console.WriteLine("\nMode et temps ?\t");
                    res = Console.ReadLine();

                    if (res == "autre")
                    {
                        break;
                    }

                    // On cherche le mode
                    if (res.Contains("conditionnel"))
                    {
                        mode = "conditionnel";
                    }
                    else if (res.Contains("subjonctif"))
                    {
                        mode = "subjonctif";
                    }
                    else if (res.Contains("impératif"))
                    {
                        mode = "impératif";
                    }
                    else if (res.Contains("participe"))
                    {
                        mode = "participe";
                    }
                    else
                    {
                        mode = "indicatif";
                    }

                    // On cherche le temps
                    if (res.Contains("présent"))
                    {
                        temps = "présent";
                    }

                    else if (mode == "indicatif")
                    {
                        if (res.Contains("imparfait"))
                        {
                            temps = "imparfait";
                        }
                        else if (res.Contains("passé simple"))
                        {
                            temps = "passé simple";
                        }
                        else if (res.Contains("futur simple"))
                        {
                            temps = "futur simple";
                        }
                        else if (res.Contains("composé"))
                        {
                            temps = "passé composé";
                        }
                        else if (res.Contains("parfait"))
                        {
                            temps = "plus-que-parfait";
                        }
                        else if (res.Contains("passé antérieur"))
                        {
                            temps = "passé antérieur";
                        }
                        else if (res.Contains("futur antérieur"))
                        {
                            temps = "futur antérieur";
                        }
                        else if (res.Contains("passé"))
                        {
                            temps = "passé simple";
                        }
                        else if (res.Contains("futur"))
                        {
                            temps = "futur simple";
                        }
                        else
                        {
                            temps = "présent";
                        }
                    }
                    else if (mode == "subjonctif")
                    {
                        if (res.Contains("imparfait"))
                        {
                            temps = "imparfait";
                        }
                        else if (res.Contains("passé"))
                        {
                            temps = "passé";
                        }
                        else if (res.Contains("parfait"))
                        {
                            temps = "plus-que-parfait";
                        }
                        else
                        {
                            temps = "présent";
                        }
                    }
                    else
                    {
                        if (res.Contains("passé"))
                        {
                            temps = "passé";
                        }
                        else
                        {
                            temps = "présent";
                        }
                    }

                    Console.WriteLine();
                    if (type == "verbe infinitif")
                    {
                        if (mode == "impératif")
                        {
                            Console.WriteLine(ConjugationOf(verbe, "2", temps, mode) + " !");
                            Console.WriteLine(ConjugationOf(verbe, "4", temps, mode) + " !");
                            Console.WriteLine(ConjugationOf(verbe, "5", temps, mode) + " !");
                        }
                        else if (mode == "subjonctif")
                        {
                            string leVerbe = ConjugationOf(verbe, "1", temps, mode);
                            if (leVerbe != "" && new char[] { 'a', 'e', 'i', 'o', 'u', 'y' }.Contains(leVerbe[0]))
                            {
                                Console.WriteLine("que j'" + leVerbe);
                            }
                            else
                            {
                                Console.WriteLine("que je " + ConjugationOf(verbe, "1", temps, mode));
                            }
                            Console.WriteLine("que tu " + ConjugationOf(verbe, "2", temps, mode));
                            Console.WriteLine("qu'il " + ConjugationOf(verbe, "3", temps, mode));
                            Console.WriteLine("que nous " + ConjugationOf(verbe, "4", temps, mode));
                            Console.WriteLine("que vous " + ConjugationOf(verbe, "5", temps, mode));
                            Console.WriteLine("qu'ils " + ConjugationOf(verbe, "6", temps, mode));
                        }
                        else if (mode == "participe")
                        {
                            Console.WriteLine(ConjugationOf(verbe, "1", temps, mode));
                        }
                        else
                        {
                            string leVerbe = ConjugationOf(verbe, "1", temps, mode);
                            if (leVerbe != "" && new char[] { 'a', 'e', 'i', 'o', 'u', 'y' }.Contains(leVerbe[0]))
                            {
                                Console.WriteLine("J'" + leVerbe);
                            }
                            else
                            {
                                Console.WriteLine("Je " + ConjugationOf(verbe, "1", temps, mode));
                            }
                            Console.WriteLine("Tu " + ConjugationOf(verbe, "2", temps, mode));
                            Console.WriteLine("Il " + ConjugationOf(verbe, "3", temps, mode));
                            Console.WriteLine("Nous " + ConjugationOf(verbe, "4", temps, mode));
                            Console.WriteLine("Vous " + ConjugationOf(verbe, "5", temps, mode));
                            Console.WriteLine("Ils " + ConjugationOf(verbe, "6", temps, mode));
                        }
                    }
                    else
                    {
                        if (mode == "impératif")
                        {
                            Console.WriteLine(ConjugationOf(verbe, "2", temps, mode) + " !");
                            Console.WriteLine(ConjugationOf(verbe, "4", temps, mode) + " !");
                            Console.WriteLine(ConjugationOf(verbe, "5", temps, mode) + " !");
                        }
                        else if (mode == "subjonctif")
                        {
                            string leVerbe = ConjugationOf(verbe, "1", temps, mode);
                            if (leVerbe != "" && new char[] { 'a', 'e', 'i', 'o', 'u', 'y' }.Contains(leVerbe[0]))
                            {
                                Console.WriteLine("que j'" + leVerbe);
                            }
                            else
                            {
                                Console.WriteLine("que je " + ConjugationOf(verbe, "1", temps, mode));
                            }
                            Console.WriteLine("que tu " + ConjugationOf(verbe, "2", temps, mode));
                            Console.WriteLine("qu'il " + ConjugationOf(verbe, "3", temps, mode));
                            Console.WriteLine("que nous " + ConjugationOf(verbe, "4", temps, mode));
                            Console.WriteLine("que vous " + ConjugationOf(verbe, "5", temps, mode));
                            Console.WriteLine("qu'ils " + ConjugationOf(verbe, "6", temps, mode));
                        }
                        else if (mode == "participe")
                        {
                            Console.WriteLine(ConjugationOf(verbe, "1", temps, mode));
                        }
                        else
                        {
                            string leVerbe = ConjugationOf(verbe, "1", temps, mode);
                            if (leVerbe != "" && new char[] { 'a', 'e', 'i', 'o', 'u', 'y' }.Contains(leVerbe[0]))
                            {
                                Console.WriteLine("J'" + leVerbe);
                            }
                            else
                            {
                                Console.WriteLine("Je " + ConjugationOf(verbe, "1", temps, mode));
                            }
                            Console.WriteLine("Tu " + ConjugationOf(verbe, "2", temps, mode));
                            Console.WriteLine("Il " + ConjugationOf(verbe, "3", temps, mode));
                            Console.WriteLine("Nous " + ConjugationOf(verbe, "4", temps, mode));
                            Console.WriteLine("Vous " + ConjugationOf(verbe, "5", temps, mode));
                            Console.WriteLine("Ils " + ConjugationOf(verbe, "6", temps, mode));
                        }
                    }
                    Console.WriteLine();
                }
                Console.Clear();
            }


            // POUR CRÉER UN FICHIER TEXTE CONTENANT LA LISTE DES VERBES À AJOUTER
            // Conjugaison.AjoutAutomatiqueVerbe.triVerbes();
        }
Esempio n. 3
0
        // METHODES DE CLASSE

        // Conjugue le verbe conjugué à la personne et au temps entrés en paramètre.
        public static string ConjugationOf(Verb verbe, string person, string time, string mode)
        {
            // On déclare un objet InfinitiveVerb sur lequel on effectuera les modifications afin de ne pas modifier le verbe entré en paramètre.
            InfinitiveVerb verbeInfinitif;

            // Cas où le verbe entré en paramètre est un verbe conjugué.
            if (verbe.Nature == "verbe conjugué")
            {
                verbeInfinitif = new InfinitiveVerb(verbe.Action, verbe.Group, verbe.AuxAvoir, verbe.AuxEtre, verbe.NonPronominale,
                                                    verbe.Pronominale, verbe.Transitif, verbe.Intransitif);
            }
            // Cas où le verbe entré en paramètre est un infinitif.

            else
            {
                verbeInfinitif = (InfinitiveVerb)verbe;
            }
            // ----- Cas des temps non composés -----
            if (new string[] { "présent", "imparfait", "passé simple", "futur simple" }.Contains(time) || mode + time == "participepassé")
            {
                string nomTable = verbeInfinitif.Nature == "verbeInfinitif conjugué" ? "VerbesConjugues" : "VerbesInfinitifs";
                // Si le verbeInfinitif est connu, on récupère directement sa conjugaison dans la base de données.
                if (estConnu(verbeInfinitif._verbe, nomTable))
                {
                    for (int idRow = 0; idRow < RecupBDD.lesData.Tables["VerbesConjugues"].Rows.Count; idRow++)
                    {
                        DataRow row = RecupBDD.lesData.Tables["VerbesConjugues"].Rows[idRow];
                        // Si on a trouvé la ligne pour l'infinitif où le groupe est le même pour le temps et la personne que l'on souhaite,
                        // en renvoie le verbeInfinitif conjugué de cette même ligne.
                        if (row["Infinitif"] as string == verbeInfinitif._verbe && row["Groupe"] as string == verbeInfinitif.Group && row["Temps"] as string == time &&
                            row["Mode"] as string == mode && row["Personne"] as string == person && row["Verbe"] as string != null)
                        {
                            // On ne renvoie le verbeInfinitif conjugué à cet endroit là que si le verbeInfinitif trouvé n'est pas null (c'est à dire, qu'il est
                            // renseigné dans la table. Sinon, on passe à la suite afin de le construire manuellement.
                            return(new ConjugatedVerb(row["Verbe"] as string, person, verbeInfinitif.Group, time, mode, verbeInfinitif._verbe,
                                                      verbeInfinitif.AuxAvoir, verbeInfinitif.AuxEtre, verbeInfinitif.NonPronominale, verbeInfinitif.Pronominale,
                                                      verbeInfinitif.Transitif, verbeInfinitif.Intransitif)._verbe);
                        }
                    }
                }
                // Si on arrive à ce stade du programme, c'est que le verbeInfinitif n'est pas connu ou que la forme voulue (temps / personne)
                // n'est pas connue. Il faut donc construire la conjugaison manuellement.

                // On commence par récupérer le radical du verbeInfinitif.
                string stem   = stemOf(verbeInfinitif._verbe, verbeInfinitif.Nature);
                string ending = "";

                for (int idRow = 0; idRow < RecupBDD.lesData.Tables["Conjugaison"].Rows.Count; idRow++)
                {
                    DataRow row = RecupBDD.lesData.Tables["Conjugaison"].Rows[idRow];
                    // Si on a trouvé la ligne où le groupe est le même pour le temps et la personne que l'on souhaite,
                    // on récupère la terminaison correspondante à cette ligne.
                    if (row["VerbGroup"] as string == verbeInfinitif.Group && row["Time"] as string == time &&
                        row["Mode"] as string == mode && row["Person"] as string == person)
                    {
                        ending = row["Ending"] as string;
                        break;
                    }
                }

                // Si ending est null, ending vaut la chaîne vide.
                ending = ending ?? "";

                // Si à ce stade, la terminaison est vide, c'est que la combinaison personne/temps/mode n'existe pas
                // (exemple : à l'impératif, seules les personnes 2, 4 et 5 existent).
                // On n'entre alors pas dans le traitement des exceptions car il n'y a rien à traiter et
                // cela va donc générer des erreurs.
                if (ending != "")
                {
                    // On traite les exceptions :

                    // Premier groupe :
                    if (verbeInfinitif.Group == "1")
                    {
                        // -eler, -eter → -elle, -ette si "appeler" ou "jeter"
                        if (ending[0] == 'e' && ending != "ez" && (verbeInfinitif._verbe.Contains("appeler") || verbeInfinitif._verbe.Contains("jeter")))
                        {
                            stem += stem[stem.Length - 1];
                        }
                        // -e*er → è
                        else if (stem[stem.Length - 2] == 'e' && ending[0] == 'e' && ending != "ez")
                        {
                            stem = stem.Substring(0, stem.Length - 2) + "è" + stem[stem.Length - 1];
                        }
                        // -é*er → è
                        else if (stem[stem.Length - 2] == 'é' && new string[] { "e", "es", "ent" }.Contains(ending))
                        {
                            stem = stem.Substring(0, stem.Length - 2) + "è" + stem[stem.Length - 1];
                        }
                        // -*yer → i
                        else if (stem[stem.Length - 1] == 'y' && ending[0] == 'e' && ending != "ez")
                        {
                            stem = stem.Substring(0, stem.Length - 1) + "i";
                        }
                    }

                    // Deuxième groupe :
                    else if (verbeInfinitif.Group == "2")
                    {
                        // Les verbes du deuxième groupe sont régulier, sauf le verbeInfinitif haïr.
                        if (verbeInfinitif._verbe == "ha" && !(new string[] { "1", "2", "3" }.Contains(person) &&
                                                               new string[] { "présent indicatif", "présent impératif" }.Contains(time + " " + mode)))
                        {
                            ending = "ï" + ending.Substring(1);
                        }
                    }

                    // Troisième groupe :
                    else if (verbeInfinitif.Group == "3")
                    {
                        // Si le dernier caractère du radical est un 't' et que la terminaison commence par un 's',
                        // on supprime le 't'. Exemple : sortir → sort- → sors
                        if (stem[stem.Length - 1] == 't' && ending[0] == 's')
                        {
                            stem = stem.Substring(0, stem.Length - 1);
                        }
                    }

                    // Général :
                    // c → ç
                    if (stem[stem.Length - 1] == 'c' && new char[] { 'a', 'o', 'â' }.Contains(ending[0]))
                    {
                        stem = stem.Substring(0, stem.Length - 1) + "ç";
                    }
                    // g → ge
                    else if (stem[stem.Length - 1] == 'g' && new char[] { 'a', 'o', 'â' }.Contains(ending[0]))
                    {
                        stem += "e";
                    }
                }

                return(new ConjugatedVerb(stem + ending, person, verbeInfinitif.Group, time, mode, verbeInfinitif._verbe, verbeInfinitif.AuxAvoir,
                                          verbeInfinitif.AuxEtre, verbeInfinitif.NonPronominale, verbeInfinitif.Pronominale, verbeInfinitif.Transitif,
                                          verbeInfinitif.Intransitif)._verbe);
            }


            // ----- Cas des temps composés -----
            // Si le temps souhaité est un temps composé (ex : passé composé), on le construit de la façon suivante :
            // auxiliaire conjugué au temps correspondant (passé composé → présent) + participe passé du verbeInfinitif.
            else
            {
                string verb = "";
                // Indicatif
                if (time == "passé composé")
                {
                    verb = ConjugationOf(new InfinitiveVerb(verbeInfinitif.GetAuxiliaire()), person, "présent", mode) + " " + verbeInfinitif.GetParticipePasse();
                }
                else if (time == "plus-que-parfait")
                {
                    verb = ConjugationOf(new InfinitiveVerb(verbeInfinitif.GetAuxiliaire()), person, "imparfait", mode) + " " + verbeInfinitif.GetParticipePasse();
                }
                else if (time == "passé antérieur")
                {
                    verb = ConjugationOf(new InfinitiveVerb(verbeInfinitif.GetAuxiliaire()), person, "passé simple", mode) + " " + verbeInfinitif.GetParticipePasse();
                }
                else if (time == "futur antérieur")
                {
                    verb = ConjugationOf(new InfinitiveVerb(verbeInfinitif.GetAuxiliaire()), person, "futur simple", mode) + " " + verbeInfinitif.GetParticipePasse();
                }
                // Autre
                else if (time == "passé")
                {
                    verb = ConjugationOf(new InfinitiveVerb(verbeInfinitif.GetAuxiliaire()), person, "présent", mode) + " " + verbeInfinitif.GetParticipePasse();
                }

                return(new ConjugatedVerb(verb, person, verbeInfinitif.Group, time, mode, verbeInfinitif._verbe, verbeInfinitif.AuxAvoir,
                                          verbeInfinitif.AuxEtre, verbeInfinitif.NonPronominale, verbeInfinitif.Pronominale, verbeInfinitif.Transitif,
                                          verbeInfinitif.Intransitif)._verbe);
            }
        }