Quitte sans raison

Signaler
Messages postés
42
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
1 février 2007
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
-
Bonjours je m'explique je debute en c# je suis entrain de suivre un
cours pour apprendre les base donc tout se passe en console et j'ai un
exercice ou je bloque et je ne sais pa pourquoi je vait vous ecrire
l'enoncé:

Exercice 21: Calculatrice

(Menu:

------------------------------------

-|-- MENU-PRINCIPAL ---------|-

-|----------------------------------|-

-|- 1 - Modifier A et
B                 
-|-

-|- 2 - Additioner A et B               -|-

-|- 3 - Soustraire A et B                -|-

-|- 4 - Multiplier A et B                 -|-

-|- 5 - Diviser(troncature) A et B   -|-;

-|- 6 - Diviser(reste) A et B          -|-

-|- 7 -
Quitter                               
-|-

--------------------------------------

)

Cette calculatrice devra faire en sorte que:

-   A et B soit deux entiers

-   Chaque choix possible (sauf le 1 et le 7) soit traités et affichés dans des methodes différentes

-   La fonction Main() n'effectue aucune des taches du menu ni même ne l'affiche

-   L'affichage du menu est géré par une fonction qui renvoie un entier correspondant au choix de l'utilisateur

-   Avant d'afficher le menu, on efface la console.


voici mon code:

using System;


class MainEntryPoint

{

    static void Main()

    {

        Menu menu = new Menu();

        int choix = menu.AffichMenu();

        menu.choix(choix);

    }

    public void quit()

    {

        return;

    }

}

class Menu

{

    public int inta = 0;

    public int intb = 0;

    public int AffichMenu()

    {

       

       

        Console.WriteLine("A = " +
inta + "       B = " + intb);

        Console.WriteLine("\n------------------------------------");

        Console.WriteLine("-|--------- MENU-PRINCIPAL ---------|-");

        Console.WriteLine("-|----------------------------------|-");

        Console.WriteLine("-|- 1 -
Modifier A et
B           
-|-");

        Console.WriteLine("-|- 2 -
Additioner A et B         
-|-");

        Console.WriteLine("-|- 3 -
Soustraire A et B         
-|-");

        Console.WriteLine("-|- 4 -
Multiplier A et B         
-|-");

        Console.WriteLine("-|- 5 - Diviser(troncature) A et B -|-");

        Console.WriteLine("-|- 6 - Diviser(reste) A et B      -|-");

        Console.WriteLine("-|- 7 -
Quitter                   
-|-");

        Console.WriteLine("--------------------------------------");

        Console.Write("Votre choix: ");

        string choixS = Console.ReadLine();

        int choix = Convert.ToInt32(choixS);

        return choix;

    }

    public void choix(int choix)

    {


        switch (choix)

        {

            case 1:

                Console.Write("A = ");

                string intaS = Console.ReadLine();

                inta = Convert.ToInt32(intaS);

                Console.Write("B = ");

                string intbS = Console.ReadLine();

                intb = Convert.ToInt32(intbS);

                Console.Clear();

                AffichMenu();

                break;

            case 2:

               
Addition();               


                Console.Clear();

                AffichMenu();

                break;

            case 3:

                Soustrac();

                Console.Clear();

                AffichMenu();

                break;

            case 4:

                Multip();

                Console.Clear();

                AffichMenu();

                break;

            case 5:

                Diviz();

                Console.Clear();

                AffichMenu();

                break;

            case 6:

                Modulo();

                Console.Clear();

                AffichMenu();

                break;

            case 7:

               
MainEntryPoint princip = new MainEntryPoint();

                princip.quit();

                break;

            default:

               
Console.WriteLine("Mauvais choix reesayez.");

                break;

        }

    }

    public void Addition()

    {

        int add = inta + intb;

        Console.Write("A + B = " + add);

        Console.Read();

        return;

    }

    public void Soustrac()

    {

        int sous = inta - intb;

        Console.WriteLine("A - B = " + sous);

        Console.Read();

        return;

    }

    public void Multip()

    {

        int mul = inta * intb;

        Console.WriteLine("A x B = " + mul);

        Console.Read();

        return;

    }

    public void Diviz()

    {

        int div = inta / intb;

        Console.WriteLine("A / B = " + div);

        Console.Read();

        return;

    }

    public void Modulo()

    {

        int div = inta / intb;

        int mod = inta % intb;

        Console.WriteLine("A / B = " + div + " reste: " + mod);

        Console.Read();

        return;

    }

}


maintenant mon problème est que seul les choix 1 et 7 fonctionnent les
autres font quitter le programme quelqun aurait il une idée ??

merci d'avance.

1 réponse

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Salut,
Ca vient du fait que dans le main tu fais ceci :

       Menu menu = new Menu();
        int choix = menu.AffichMenu();
        menu.choix(choix);

une fois le choix effectué (ligne 3), le programme se termine, logique, il n'y pas plus d'instruction après.
L'idée c'est de faire une boucle, pour que le programme ne quitte pas.

De plus, ta class Menu ne sert à rien en tant qu'object, voilà ce que je te propose (rapidement fait) :

using System;

namespace

BasicCalculator
{
  
public
class
Calculator
   {
     
private
int _a = 0;
     
private
int _b = 0;
     
private
static
bool _stop =
false;

     
public
static
void Main()
      {
        
Calculator cal =
new
Calculator();

        
do
         {
            try
           
{
               cal.DoChoice(cal.DisplayMenu());
            }
           
catch (
ArgumentException argEx)
            {
              
Console.WriteLine(argEx.Message);
              
Console.WriteLine();
            }

         }
         while (!_stop);
      }

      private
int DisplayMenu()
      {
        
Console.WriteLine(
string.Format("A {0} b {1}",
this._a,
this._b));
        
Console.WriteLine();
        
Console.WriteLine(
"--------------------------------------");
        
Console.WriteLine(
"-|--------- MENU-PRINCIPAL ---------|-");
        
Console.WriteLine(
"-|----------------------------------|-");
        
Console.WriteLine(
"-|- 1 - Modifier A et B -|-");
        
Console.WriteLine(
"-|- 2 - Additioner A et B -|-");
        
Console.WriteLine(
"-|- 3 - Soustraire A et B -|-");
        
Console.WriteLine(
"-|- 4 - Multiplier A et B -|-");
        
Console.WriteLine(
"-|- 5 - Diviser(troncature) A et B -|-");
        
Console.WriteLine(
"-|- 6 - Diviser(reste) A et B -|-");
        
Console.WriteLine(
"-|- 7 - Quitter -|-");
        
Console.WriteLine(
"--------------------------------------");
        
Console.WriteLine();
        
Console.Write(
"Votre choix: ");
        
return
Convert.ToInt32(
Console.ReadLine());
      }

     
private
void DoChoice(
int choice)
      {
        
switch (choice)
         {
           
case 1:
this.ChangeVariable();
break;
           
case 2:
this.Add();
break;
           
//case 3: this.Substract(); break;
            //case 4: this.Multiply(); break;
            //case 5: this.Divide(); break;
            //case 6: this.Modulo(); break;
            case 7: _stop =
true;
break;
           
default:
throw
new
ArgumentException(
"'choice' was not in a valid range");
         }
         
Console.Clear();
      }

      private
void ChangeVariable(
      {
        
Console.Write(
"A = ");
        
this._a =
Convert.ToInt32(
Console.ReadLine());
        
Console.Write(
"B = ");
        
this._b =
Convert.ToInt32(
Console.ReadLine());
      }

      
private
void Add()
      {
        
Console.WriteLine(
this._a +
this._b);
        
Console.WriteLine();
        
Console.WriteLine(
"Press any key to continue...");
        
Console.ReadLine();
      }
   }
}

<hr size="2" />VC# forever