none
Calculatrice console RRS feed

Réponses

Toutes les réponses

  • bonjour,

    Vous pouvez faire ceci :


    			String strI = "10";
    			int intI = int.Parse(strI);
    			//ou 
    			if (int.TryParse(strI, out intI))
    			{
    				Console.WriteLine("conversion réussie");
    			}

    cordialement,

    Mathieu
    Mathieu Francesch Sharplog Engineering
    lundi 1 février 2010 12:23
  • Ou encore:

    int intI = Convert.toInt32("10");
    Mais cela ne gère pas les erreurs de transformation comme le fait le TryParse
    Microsoft MVP C# :: mongeon.devrpm.ca
    lundi 1 février 2010 14:23
    Modérateur
  • Bon je poste le code car je ne trouve pas ou ca beug.
    Ce que je voudrais c'est que la boucle continu tant que l'utilisateur n a pas taper + ou - ou * ou /


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Calculateur
    {
        class Program
        {
            static void Main(string[] args)
            {
                string ad = "+";
                string sous = "-";
                string mult = "*";
                string div = "/";
                int adition = int.Parse(ad);
                int soustraction = int.Parse(sous);
                int multiplication = int.Parse(mult);
                int division = int.Parse(div);
                int Calculateur;
                int CalculateurbOK = 0;
                
                //On demarre la boucle pour le calculateur
                while (CalculateurbOK == 0)
                {
                    //On demande le calculateur a utiliser
                    Console.WriteLine("Veuillez entrer votre calculateur :");
                    Console.WriteLine("'+' pour adition");
                    Console.WriteLine("'-' pour soustraction");
                    Console.WriteLine("'*' pour multiplication");
                    Console.WriteLine("'/' pour division");
    
                    //Lecture et vérification
                    try
                    {
                        Calculateur = int.Parse(Console.ReadLine());
                        CalculateurbOK = Calculateur = adition |= soustraction |= multiplication |= division;
                    }
                    catch
                    {
                    }
                    if (CalculateurbOK == 0)
                    {
                        Console.WriteLine("Operateur invalide. Recommencez...");
                    }
    
                }//Fin while
                Console.WriteLine("Vous avez choisie l'operateur : {0}", CalculateurbOK);
            }
        }
    }
    VOILA et la console me renvois cette erreur :


    Exception non gérée : System.FormatException: Le format de la chaîne d'entrée es
    t incorrect.
       à System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer
    & number, NumberFormatInfo info, Boolean parseDecimal)
       à System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo inf
    o)
       à Calculateur.Program.Main(String[] args) dans D:\C #\C# Pure\Tutoriels\Appre
    ntissage du language C# 2008\Exercices Visual C# 2008\1) Les bases du language C
    #\4.1) Un Calculateur (Adrien67)\Calculateur\Calculateur\Program.cs:ligne 15
    Appuyez sur une touche pour continuer...

    Si quelqu un pourrais m aider??
    • Modifié adrien67 lundi 1 février 2010 16:42
    lundi 1 février 2010 16:32
  • Bonjour,

    Les lignes qui contiennent des conversions d'opérateurs en int sont erronées (+, -, *, / sont des opérateurs et pas des int).

    Vous pouvez faire : int test = int.Parse("10");
    mais pas  int test = int.Parse("+");


    Cordialement,

    Mathieu


    Mathieu Francesch Sharplog Engineering
    lundi 1 février 2010 16:41
  • Bonjour,

    En effet, Mathieu a raison, on ne peut pas parser en entier des opérateurs.

    Pour faire une calculatrice Console en C#, voilà plusieurs exemples, ils t'aideront peut-être à comprendre ce qu'il faut faire :
    Juste le squelette de gestion des opérateurs :
    http://www.dreamincode.net/forums/showtopic36553.htm

    Une implémentation simple :
    http://www.siteduzero.com/forum-83-291009-p1-c-exercice-calculatrice.html

    Une version un peu plus complexe :
    http://www.daniweb.com/code/snippet217185.html

    Cordialement,

    Thomas

    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    lundi 1 février 2010 16:55
  • oui mais si je fait :

    int adition = Convert.toInt32("+");
    J ai une petite info qui genere une erreur et me dit : 'System.Convert' ne contient pas de definition pour toInt32
    lundi 1 février 2010 16:57
  • alor ma question comment fait on pour convertir un operateur en int?
    lundi 1 février 2010 16:59
  • bonjour,

    Car c'est ToInt32() et pas toInt32()

    Mais on ne peut pas faire ToInt32("+") en lui passant un opérateur

    Cordialement,

    Mathieu


    Mathieu Francesch Sharplog Engineering
    lundi 1 février 2010 17:00
  • Bonsoir Adrien,

    Convertir un operateur en entier n'a pas de sens.
    C'est comme convertir un pied en chaussure, ce n'est pas possible.
    Les 2 fonctionnent ensemble, mais sont completement différents.

    Je te conseille de jeter un coup d'oeil au moins au 1er lien que je t'ai donné au-dessus (prends la derniere version tout en bas du post).
    Cela te donnera une idée de comment gérer les operateurs.
    En tout cas, c'est un bon exercice, bon courage :)

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    lundi 1 février 2010 17:02
  • Ca y est j ai avancé un peu plus dans ma calculatrice mais maintenant j ai un nouveau message d erreur qu es qu il veut dire :

    Erreur 1 Le programme 'D:\C #\C# Pure\Tutoriels\Apprentissage du language C# 2008\Exercices Visual C# 2008\1) Les bases du language C#\4.1) Un Calculateur (Adrien67)\CalculatriceConsole\CalculatriceConsole\obj\Release\CalculatriceConsole.exe' ne contient pas une méthode 'Main' statique appropriée pour un point d'entrée CalculatriceConsole
    mardi 2 février 2010 13:48
  • Bonjour Adrien,

    Pour qu'un programme puisse fonctionner, il a besoin d'un point d'entrée.

    Dans une application console ce point d'entrée est la méthode statique Main comme dans l'exemple ci-dessous :

    namespace ConsoleApplication1
    {
    	class Program
    	{
    		static void Main(string[] args)
    		{
    			//ICI LE CODE DE VOTRE PROGRAMME
    		}
    	}
    }
    Est ce que votre application console contient cette méthode ? (dans le fichier program.cs par défaut) ?

    N'hésitez pas à publier votre code ici afin que l'on puisse vous aider plus facilement.

    Cordialement,

    Mathieu

    Mathieu Francesch Sharplog Engineering
    mardi 2 février 2010 15:10
  • Voila j ai plus ce message d'erreur mais par contre je n'arrive pas a faire communiquer mes deux methode. Par exemple ma methode Nombre dans le main ne prend pas d'argument.

    Voici le code :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace CalculatriceConsole
    {
      
        class Program
        {
    
             static void Main(string[] args)
            {
                //Adaptation de la classe Utilisateur
                
                int i = 0;
                while (i == 0)
                {
                    Console.WriteLine("Choisissez votre operateur : ");
                    Console.WriteLine("'+' pour addition.");
                    Console.WriteLine("'-' pour soustraction");
                    Console.WriteLine("'*' pour multiplication");
                    Console.WriteLine("'/' pour division");
                    Console.WriteLine("Faites votre choix : ");
                    String Operateur = Console.ReadLine();
                    switch (Operateur)
                    {
                        case "+":
                            int Nb01, Nb02;
                            Console.WriteLine("Vous avez choisi l'adition de deux nombres.");
                            Nb01 = Nombres();
                            Console.WriteLine("Choisissez votre deuxieme nombre.");
                            Nb02 = Nombres();
                            Console.WriteLine("{0} , {1}", Nb01, Nb02);
                            i++;
                        break;
                        case "-":
                            Console.WriteLine("Vous avez choisi la soustraction de deux nombres.");
                            i++;
                        break;
                        case "*":
                            Console.WriteLine("Vous avez choisi la multiplication de deux nombres.");
                            i++;
                        break;
                        case "/":
                        Console.WriteLine("Vous avez choisi la division de deux nombres.");
                        i++;
                        break;
                        default :
                        Console.WriteLine("Vous n'avez pas choisi un bon opérateur. Recommencez...");
                        break;
                    }
                }
            }
    
             private int Nombres(int NbUtilisateur)
             {
    
                 int i = 0;
                 while (i == 0)
                 {
                     Console.WriteLine("Choisissez un nombre entier ( Maximum 9 chiffres ).");
                     String Choix = Console.ReadLine();
                     int ChoixL = int.Parse(Choix);
                     if (ChoixL <= 999999999)
                     {
                         NbUtilisateur = ChoixL;
                         i++;
                     }
                     else
                     {
                         Console.WriteLine("Vous n'avez pas entrez un nombre valide. Recommencez...");
                     }
    
                 } return 0;
             }
         
           
        }
    }
    
    mardi 2 février 2010 15:17
  • Bonjour,

    la méthode Nombre pourrait retourner en retour le nombre choisi.
    Par exemple :
    private int Nombres()
    {
    
       int i = 0;
       int NbUtilisateur = 0;
    
       while (i == 0)
       {
           Console.WriteLine("Choisissez un nombre entier ( Maximum 9 chiffres ).");
           String Choix = Console.ReadLine();
           int ChoixL = int.Parse(Choix);
           if (ChoixL <= 999999999)
           {
               NbUtilisateur = ChoixL;
               i++;
           }
           else
           {
              Console.WriteLine("Vous n'avez pas entrez un nombre valide. Recommencez...");
            }
       } 
       return NbUtilisateur;
    }
    
    
    mardi 2 février 2010 15:34
    Modérateur
  • Bonjour,

    Je vous ai écris un petit exemple qui est facilement optimisable et qui pourra peut-être vous aider dans votre exercice. Il contient quelques exemples concernant les sujets évoqués dans ce thread :

    static void Main(string[] args)
    		{
    			String Operateur = String.Empty;
    			String isFinish = String.Empty;
    		
    			int nbr1 = 0;
    			int nbr2 = 0;
    
    			do
    			{
    
    				Console.WriteLine("Souhaitez-vous effectuer une opération (o/n) ?");
    				isFinish = Console.ReadLine();
    				if (isFinish.Equals("n"))
    				{
    					break;
    				}
    				do
    				{
    					Console.WriteLine("Choisissez votre operateur : ");
    					Console.WriteLine("'+' pour addition.");
    					Console.WriteLine("'-' pour soustraction");
    					Console.WriteLine("'*' pour multiplication");
    					Console.WriteLine("'/' pour division");
    					Console.WriteLine("Faites votre choix : ");
    					Operateur = Console.ReadLine();
    				} while (!Operateur.Equals("+") & !Operateur.Equals("-") & !Operateur.Equals("/") & !Operateur.Equals("*"));
    
    				do
    				{
    					Console.WriteLine("Entrer un nombre 1 valide : ");
    				} while (!int.TryParse(Console.ReadLine(), out nbr1));
    
    				do
    				{
    					Console.WriteLine("Entrer un nombre 2 valide : ");
    				} while (!int.TryParse(Console.ReadLine(), out nbr2));
    
    				switch (Operateur)
    				{
    					case "+":
    						Console.WriteLine("Résulat de l'opération {0}{1}{2} = {3}", nbr1.ToString(), Operateur, nbr2.ToString(), (nbr1 + nbr2).ToString());
    						break;
    					case "-":
    						Console.WriteLine("Résulat de l'opération {0}{1}{2} = {3}", nbr1.ToString(), Operateur, nbr2.ToString(), (nbr1 - nbr2).ToString());
    						break;
    					case "*":
    						Console.WriteLine("Résulat de l'opération {0}{1}{2} = {3}", nbr1.ToString(), Operateur, nbr2.ToString(), (nbr1 * nbr2).ToString());
    						break;
    					case "/":
    						if (nbr1 != 0)
    						{
    							Console.WriteLine("Résulat de l'opération {0}{1}{2} = {3}", nbr1.ToString(), Operateur, nbr2.ToString(), (nbr1 / nbr2).ToString());
    						}
    						break;
    					default:
    						Console.WriteLine("Vous n'avez pas choisi un bon opérateur. Recommencez...");
    						break;
    				}
    
    			} while (true);
    
    		}

    Cordialement,

    Mathieu
    Mathieu Francesch Sharplog Engineering
    mardi 2 février 2010 17:10
  • Arf se programme marche nicquel avec juste un bug pour la division par 0.
    Mais je suis pas encore aussi loin avec mes cours mais je vais prendre exemple j arrive a lire et comprendre ce que fait le code .
    C'est deja ca lol
    mardi 2 février 2010 17:17
  • Adrien,

    Est ce que nous avons répondu à vos questions et pouvons nous clore ce thread ou souhaitez vous des informations complémentaires ?

    Cordialement,

    Mathieu
    Mathieu Francesch Sharplog Engineering
    • Marqué comme réponse adrien67 mardi 2 février 2010 17:39
    mardi 2 février 2010 17:37