using System;//espace de nommage//

class Program {//encapsule, enveloppe le programme et offre une structure pour l'organiser comme une application//
  public static void Main (string[] args) {//point d'entrée du programme//
    
    string reponseUtilisateur; //création d'une variable qui va contenir une chaine de caratère//
    int choixUtilisateur;//création d'une variable qui va contenire une valeur de type entier//
    double terme1;//création d'une variable qui va contenire une valeur de type entier ou décimal//
    double terme2;//création d'une variable qui va contenire une valeur de type entier ou décimal//
    
    do //création d'une boucle do while pour moi la plus adaptée car elle vérifie la condition à la fin d'un premier tour effectué//
    {
          //affiche le menu avec les différentes opérations possibles//
          Console.WriteLine ("MAIN MENU: ADDITION[1] SOUSTRACTION[2] MULTIPLICATION[3] \nDIVISION[4] TABLE DE MULTIPLICATION[5]"); 
          // \n permet un retour à la ligne//
          Console.WriteLine("Choisissez l'opération à effectuer:"); 
          //demane à l'utilisateur de sélectionner une opération dans le menu//
          choixUtilisateur = Convert.ToInt32(Console.ReadLine()); 
          //permet à l'utilisateur d'entrer le chiffe correspondant à l'opération choisie//
          switch(choixUtilisateur)//liste des actions possibles à réaliser en fonction du choix d'opération choisie par l'utilisateur en fonction du chiffre dans le menu//
          {
          case 1://correspond au choix de l'utilidateur pour l'addition en entrant le chiffre 1//
            Console.WriteLine("Entrer le 1er terme : ");//demande à l'utilisateur d'entrer une 1ère valeur//
            terme1 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 1ère valeur//
            Console.WriteLine("Entrez le 2ème terme : ");//demande à l'utilisateur d'entrer une 2ème valeur//
            terme2 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 2ème valeur//
            Console.WriteLine("Le résultat est :{0}",terme1 + terme2);//affiche une phrase + la somme des termes saisis de l'addition//
              break;//permet de sortir du switch//
          case 2://correspond au choix de l'utilidateur pour la soustraction en entrant le chiffre 2//
            Console.WriteLine("Entrer le 1er terme : ");//demande à l'utilisateur d'entrer une 1ère valeur//
            terme1 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 1ère valeur//
            Console.WriteLine("Entrez le 2ème terme : ");//demande à l'utilisateur d'entrer une 2ème valeur//
            terme2 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 2ème valeur//
            Console.WriteLine("Le résultat est :{0}",terme1 - terme2);//affiche une phrase + la différence des termes saisis de la soustraction//
              break;//permet de sortir du switch//
          case 3://correspond au choix de l'utilidateur pour la multiplication en entrant le chiffre 3//
            Console.WriteLine("Entrer le 1er terme : ");//demande à l'utilisateur d'entrer une 1ère valeur//
            terme1 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 1ère valeur//
            Console.WriteLine("Entrez le 2ème terme : ");//demande à l'utilisateur d'entrer une 2ème valeur//
            terme2 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 2ème valeur//
            Console.WriteLine("Le résultat est :{0}",terme1 * terme2);//affiche une phrase + le produit des facteurs (les 2 valeures saisies) de la division//
              break;//permet de sortir du switch
          case 4://correspond au choix de l'utilidateur pour la division en entrant le chiffre 4//
            Console.WriteLine("Entrer le 1er terme : ");//demande à l'utilisateur d'entrer une 1ère valeur//
            terme1 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 1ère valeur//
            Console.WriteLine("Entrez le 2ème terme : ");//demande à l'utilisateur d'entrer une 2ème valeur//
            terme2 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une 2ème valeur//
            while (terme2 == 0)//création boucle while qui s'éffcetue à la condition tant le 2ème terme est égale à 0 pour permettre à l'utilisateur de corriger son erreur//
            {
              Console.WriteLine("Erreur math : Division par zéro imposible!!");//affiche que la division est imposible//
              Console.WriteLine("Entrez une nouvelle valeur correct(autre que 0) du 2ème terme : ");//demande à l'utilisateur d'entrer une nouvelle bonne 2ème valeur//
              terme2 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une nouvelle bonne 2ème valeur//
            }
            Console.WriteLine("Le résultat est :{0}",terme1 / terme2);//affiche une phrase + le quotient du dividende par le diviseur (les 2 valeures saisies) de la division//
              break;//permet de sortir du switch//
          case 5://correspond au choix de l'utilidateur pour la tablede multiplication en entrant le chiffre 5//
            Console.WriteLine("Entrez votre chiffre ou nombre : ");//demande à l'utilisateur d'entrer le chiffre ou le nombre dont ilveut la table de multiplication//
            terme1 = Convert.ToDouble(Console.ReadLine());//permet à l'utilisateur de saisir une valeur qu'il a choisi//
            Console.WriteLine("Voici la liste des résultats de la table de : {0} ",terme1);//affiche la phrase inscrite + le chiffre ou nombre choisi par l'utilisateur//
            for (int i = 0; i <= 10; i++)//création boucle for car on sait on va répéter une multiplication 11 fois de 0 à 10, tant que la variable i initialisée à 0 est plus petite ou égale à 10 en lui ajoutant un pas de 1 //
            {
              Console.WriteLine(i*terme1);//affiche à chaque tour le produit de i par le nombre ou chiffre choisie//
            }
              break;//permet de sortir du switch//
          default://gère tout les autres cas sifférents de ceux prévus//
            Console.WriteLine("Une erreur est survenue");//affiche un message d'erreur//
              break;//permet de sortir du switch//
          }
      
          Console.WriteLine("Refaire un calcul[F1] ou Quitter[F2]: ");
          // demande à l'uitlisateur si il veut continuer à utiliser l'application//
          reponseUtilisateur = Console.ReadLine();
          //permet à l'utilisateur de saisir//
          if (reponseUtilisateur == "F2")//vérifie la condition si la réponse est égale à F2 ce qui signie fin d'utilisation et effectue la condition qui suit//
          {
            Console.WriteLine("Power of");
            //affiche le message inscrit (purement esthétique)//
          }
    } while ( reponseUtilisateur == "F1"); //vérifie la condition si la réponse saisie est égale à F1 pour continuer la boucle//
    
    }
  }