Additionner,Soustraire,Multiplier et diviser [Résolu]

Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Dernière intervention
28 novembre 2005
- - Dernière réponse : LUDINSKI
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Dernière intervention
22 mai 2012
- 29 nov. 2005 à 09:15
Salut à tous, voici ma question:
Dans le code suivant, il faut choisir entre additionner, soustraire, multiplier et diviser. Quelqu'un peut-il m'aider à réorganiser le code pour que dans chaque Case de Switch je ne sois pas obligé de retaper la portion concernant la saisie du premier et du deuxième nombre (en italique souligné dans le code), puisqu'à chaque fois c'est la même chose. Je suis vraiment novice, alors soyez indulgent et aidez-moi !


using System
;


namespace Operators


{


/// <summary>


/// Effectue des multiplications additions divisions soustractions


/// </summary>


public class Class1



{


public static void Main(string[] args
)


{ // Demande le type d'opération à effectuer :


// 1 pour additionner


// 2 pour multiplier


// 3 pour diviser


// 4 pour soustraire


Console
.WriteLine("Type d'opération à effectuer :");


Console
.WriteLine(); // Saut de ligne


Console
.WriteLine("1-Addition");


Console
.WriteLine("2-Multiplication");


Console
.WriteLine("3-Division");


Console
.WriteLine("4-Soustraction");


Console
.WriteLine(); // Saut de ligne


Console
.WriteLine("Choisissez le numéro correspondant à l'opération que vous souhaitez faire : ");


string sMyChoice
= Console
. ReadLine ();


// Convertit ce qui a été saisi en un entier


int nMyChoice
= Convert
.ToInt32(sMyChoice
);


string sFirstNbr
;


string sSecondNbr
;


decimal mFirstNbr
;


decimal mSecondNbr
;


decimal mResult
;


switch(nMyChoice
)


{


case 1:



//Demande le premier nombre


Console.Write("Entrez le premier nombre : " );


sFirstNbr = Console
.ReadLine
();


// Convertit ce qui a été saisi en un decimal


mFirstNbr = Convert
.ToDecimal(sFirstNbr
);





//Demande le second nombre


Console.Write("Entrez le deuxième nombre : " );


sSecondNbr = Console
.ReadLine
();


//Convertit ce qui a été saisi en un decimal


mSecondNbr = Convert
.ToDecimal(sSecondNbr
);


// Additionne le premier et le deuxième nombre


mResult
= mFirstNbr
+ mSecondNbr
;


// Affiche le résultat


Console
. WriteLine (); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " plus " + mSecondNbr
+ " est égal à " + mResult
);


break;


case 2:



//Demande le premier nombre


Console
.Write("Entrez le premier nombre : ");


sFirstNbr
= Console
.ReadLine();


// Convertit ce qui a été saisi en un decimal


mFirstNbr
= Convert
. ToDecimal (sFirstNbr
);


//Demande le second nombre


Console
.Write("Entrez le deuxième nombre : ");


sSecondNbr
= Console
.ReadLine();


//Convertit ce qui a été saisi en un decimal


mSecondNbr
= Convert
. ToDecimal (sSecondNbr
);


// Multiplie le premier et le deuxième nombre


mResult
= mFirstNbr
* mSecondNbr
;


// Affiche le résultat


Console
.WriteLine(); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " multiplié par " + mSecondNbr
+ " est égal à " + mResult
);


break;


case 3:



//Demande le premier nombre


Console
.Write("Entrez le premier nombre : ");


sFirstNbr
= Console
. ReadLine ();


// Convertit ce qui a été saisi en un decimal


mFirstNbr
= Convert
.ToDecimal(sFirstNbr
);


//Demande le second nombre


Console
.Write("Entrez le deuxième nombre : ");


sSecondNbr
= Console
. ReadLine ();


//Convertit ce qui a été saisi en un decimal


mSecondNbr
= Convert
.ToDecimal(sSecondNbr
);


// Divise le premier et le deuxième nombre


mResult
= mFirstNbr
/ mSecondNbr
;


// Affiche le résultat


Console
. WriteLine (); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " divisé par " + mSecondNbr
+ " est égal à " + mResult
);


break;


case 4:



//Demande le premier nombre


Console
.Write("Entrez le premier nombre : ");


sFirstNbr
= Console
.ReadLine();


// Convertit ce qui a été saisi en un decimal


mFirstNbr
= Convert
. ToDecimal (sFirstNbr
);


//Demande le second nombre


Console
.Write("Entrez le deuxième nombre : ");


sSecondNbr
= Console
.ReadLine();


//Convertit ce qui a été saisi en un decimal


mSecondNbr
= Convert
. ToDecimal (sSecondNbr
);


// Divise le premier et le deuxième nombre


mResult
= mFirstNbr
- mSecondNbr
;


// Affiche le résultat


Console
.WriteLine(); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " moins " + mSecondNbr
+ " est égal à " + mResult
);


break;


default:


Console
.WriteLine("Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.");


Console
.WriteLine(); // Saute une ligne


break;


}


}


}


}
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
3
Merci
Salut,

Une méthode ?
private decimal GetNumber(string question)
{
Console.Write(question);
string sNb = Console.ReadLine();
// Convertit ce qui a été saisi en un decimal
return Convert.ToDecimal(sNb);
}

Appel :
//Demande le premier nombre
mFirstNbr = this.GetNumber("Entrez le premier nombre : ");
//Demande le second nombre
mSecondNbr = this.GetNumber("Entrez le deuxième nombre : ");

/*
coq
MVP Visual C#
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Dernière intervention
22 mai 2012
3
Merci
Salut V1,

static void Main(string
[] args)
{
Console.WriteLine( "Type d'opération à effectuer :\n" );
Console.WriteLine( "1-Addition\n2-Multiplication\n3-Division\n4-Soustraction\n" );


bool operatorOK = false
;
int
nMyChoice = 0;
do
{
Console.WriteLine( "Choisissez le numéro correspondant à l'opération que vous souhaitez faire : " );
string
sMyChoice = Console.ReadLine();
nMyChoice = Convert.ToInt32( sMyChoice );

if( nMyChoice < 1 || nMyChoice > 4 )
{
Console.WriteLine( "Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.\n" );
}
else
operatorOK = true
;
}
while
( ! operatorOK );

string sFirstNbr, sSecondNbr;
decimal
mFirstNbr, mSecondNbr;

Console.Write( "Entrez le premier nombre : " );
sFirstNbr = Console.ReadLine();
mFirstNbr = Convert.ToDecimal( sFirstNbr );

Console.Write( "Entrez le deuxième nombre : " );
sSecondNbr = Console.ReadLine();
mSecondNbr = Convert.ToDecimal( sSecondNbr );

Console.WriteLine(); // Saute une ligne

decimal mResult;
string
operation = "";
switch
( nMyChoice )
{
case
1:

mResult = mFirstNbr + mSecondNbr;
operation = " plus ";
break
;

case
2:

mResult = mFirstNbr * mSecondNbr;
operation = " multiplié par ";
break
;

case 3:

if( mSecondNbr == 0 )
{
Console.WriteLine( "division par zéro impossible" );
return
;
}

mResult = mFirstNbr / mSecondNbr;
operation = " divisé par ";
break
;

default:

mResult = mFirstNbr - mSecondNbr;
operation = " moins ";
break
;
}

Console.WriteLine( mFirstNbr + operation + mSecondNbr + " est égal à " + mResult );
}

Ca devrait faire ce qui faut qu'ça fasse... ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de LUDINSKI
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Dernière intervention
28 novembre 2005
0
Merci
J'ai validé la réponse car je suis sûr qu'il faut faire comme ça, mais le compiler me dit "keyword this is not valid in a static property, static method, or static field initializer". Voici ce que j'ai mis (j'ai retiré le reste des Case, je n'ai laissé que le 1 et le default, pour simplifier), mais je pense que je me suis trompé en remettant la méthode telle quelle dans le code. Si tu m'aides encore une fois ce serait bien, (-coq-) après je te fous le paix pour aujourd'hui, et je vais m'informer sur les méthodes et les fonctions !

ps : ben dis-donc c'est pas évident quand on débute, quelle galère !


using System
;


namespace Operators


{


/// <summary>


/// Effectue des multiplications


/// </summary>


public class Class1



{


public static void Main(string[] args
)


{ // Demande le type d'opération à effectuer :


// 1 pour additionner


// 2 pour multiplier


// 3 pour diviser


// 4 pour soustraire


Console
.WriteLine("Type d'opération à effectuer :");


Console
.WriteLine(); // Saut de ligne


Console
.WriteLine("1-Addition");


Console
.WriteLine("2-Multiplication");


Console
.WriteLine("3-Division");


Console
.WriteLine("4-Soustraction");


Console
.WriteLine(); // Saut de ligne


Console
.WriteLine("Choisissez le numéro correspondant à l'opération que vous souhaitez faire : ");


string sMyChoice
= Console
. ReadLine ();


// Convertit ce qui a été saisi en un entier


int nMyChoice
= Convert
.ToInt32(sMyChoice
);


string sFirstNbr
;


string sSecondNbr
;


decimal mFirstNbr
;


decimal mSecondNbr
;


decimal mResult
;


switch(nMyChoice
)


{


case 1:



//Demande le premier nombre


mFirstNbr = this
.GetNumber("Entrez le premier nombre : "
);


//Demande le second nombre


mSecondNbr = this
.GetNumber("Entrez le deuxième nombre : "
);


// Affiche le résultat


Console
.WriteLine(); // Saute une ligne


Console
.WriteLine(mFirstNbr
+ " plus " + mSecondNbr
+ " est égal à " + mResult
);


break;


default:


Console
.WriteLine("Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.");


Console
.WriteLine(); // Saute une ligne


break;


}


}


private decimal GetNumber(string question
)


{


Console
.Write(question
);


string sNb
= Console
.ReadLine();


// Convertit ce qui a été saisi en un decimal


return Convert
.ToDecimal(sNb
);


}


}


}



Commenter la réponse de cs_v1
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Dernière intervention
3 novembre 2008
0
Merci
Code source modifié pour économiser d'avantage d'espace


using System;


namespace Operators


{


public
class Class1


{


public
static
void Main(
string[] args)


{ Console.WriteLine("Type d'opération à effectuer :");


Console.WriteLine();
// Saut de ligne


Console.WriteLine("1-Addition\n2-Multiplication\n3-Division\n4-Soustraction\n");


Console.WriteLine("Choisissez le numéro correspondant à l'opération que vous souhaitez faire : ");



string sMyChoice = Console.ReadLine();



// Convertit ce qui a été saisi en un entier



int nMyChoice = Convert.ToInt32(sMyChoice);



string sFirstNbr;
string sSecondNbr;



decimal mFirstNbr;
decimal mSecondNbr;



decimal mResult;


Console.Write("Entrez le premier nombre : ");


sFirstNbr = Console.ReadLine();


mFirstNbr = Convert.ToDecimal(sFirstNbr);


Console.Write("Entrez le deuxième nombre : ");


sSecondNbr = Console.ReadLine();


mSecondNbr = Convert.ToDecimal(sSecondNbr);



switch(nMyChoice)


{



case 1:


mResult = mFirstNbr + mSecondNbr;


Console.WriteLine();
// Saute une ligne


Console.WriteLine(mFirstNbr + " plus " + mSecondNbr + " est égal à " + mResult);



break;



case 2:


mResult = mFirstNbr * mSecondNbr;


Console.WriteLine();
// Saute une ligne


Console.WriteLine(mFirstNbr + " multiplié par " + mSecondNbr + " est égal à " + mResult);



break;



case 3:



if(mSecondNbr!=0)


{


mResult = mFirstNbr / mSecondNbr;


Console.WriteLine();
// Saute une ligne


Console.WriteLine(mFirstNbr + " divisé par " + mSecondNbr + " est égal à " + mResult);


}



else


{


Console.WriteLine();
// Saute une ligne


Console.WriteLine("division par zéro impossible");


}



break;



case 4:


mResult = mFirstNbr - mSecondNbr;


Console.WriteLine();
// Saute une ligne


Console.WriteLine(mFirstNbr + " moins " + mSecondNbr + " est égal à " + mResult);



break;



default:


Console.WriteLine("Vous devez saisir un nombre compris entre 1 et 4, Veuillez recommencer.");


Console.WriteLine();
// Saute une ligne



break;


}


}


}


}

@++
Commenter la réponse de cs_badrbadr
Messages postés
9
Date d'inscription
jeudi 22 janvier 2004
Dernière intervention
28 novembre 2005
0
Merci
Oui c'est pas mal badrbadr, mais ce n'est plus très logique dans de cas, parce que si je recopie le code, je me rend compte que je peux sasir des nombres supérieur à 4 au début, et c'est seulement après avoir saisi les deux nombres que la phrase du "Default" apparaît !
Commenter la réponse de cs_v1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.