Problème pour faire une suite d'opérations en C#
Résolu/Fermé
Eaglewin
Messages postés
6
Date d'inscription
mardi 26 juin 2018
Statut
Membre
Dernière intervention
28 juin 2018
-
26 juin 2018 à 12:57
Eaglewin Messages postés 6 Date d'inscription mardi 26 juin 2018 Statut Membre Dernière intervention 28 juin 2018 - 28 juin 2018 à 08:24
Eaglewin Messages postés 6 Date d'inscription mardi 26 juin 2018 Statut Membre Dernière intervention 28 juin 2018 - 28 juin 2018 à 08:24
A voir également:
- Problème pour faire une suite d'opérations en C#
- Télécharger opera mini pour pc - Télécharger - Navigateurs
- L'opération demandée nécessite une élévation ✓ - Forum Windows
- Votre opérateur vous localise dans une zone ✓ - Forum Internet / Réseaux sociaux
- Impossible d'effectuer l'opération en raison d'une erreur indéterminée illustrator - Forum Illustrator
- Comment changer de forfait en restant chez le même opérateur ✓ - Forum Mobile
10 réponses
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
26 juin 2018 à 13:09
26 juin 2018 à 13:09
Bonjour,
Pour que l’on puisse faire quelque chise avec ton code, c’est pas des captures d’écran qu’il nous faut.
C’est le code copié collé et mis en couleur avec les balises dédiées, voir explications ici https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Pour que l’on puisse faire quelque chise avec ton code, c’est pas des captures d’écran qu’il nous faut.
C’est le code copié collé et mis en couleur avec les balises dédiées, voir explications ici https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Eaglewin
Messages postés
6
Date d'inscription
mardi 26 juin 2018
Statut
Membre
Dernière intervention
28 juin 2018
26 juin 2018 à 13:42
26 juin 2018 à 13:42
Bonjour,
Voici donc le code :
Le deuxième :
Et le dernier :
J'espère que cela pourra vous aider
Cordialement
Voici donc le code :
private void button5_Click(object sender, RoutedEventArgs e)
{
Button b = (Button)sender;
if (result != 0)
{
operation = Convert.ToString(b.Content);
txtDisplay.Text = (result / Double.Parse(txtDisplay.Text)).ToString();
result = Double.Parse(txtDisplay.Text);
txtDisplay.Text = "";
IbIShowOps.Text = result + " " + b.Content;
enter_value = true;
}
else
{
operation = Convert.ToString(b.Content);
result = Double.Parse(txtDisplay.Text);
IbIShowOps.Text = result + " " + b.Content;
enter_value = true;
}
firstnum = IbIShowOps.Text;
}
Le deuxième :
private void btnEquals_Click(object sender, RoutedEventArgs e)
{
secondnum = txtDisplay.Text;
IbIShowOps.Text = "";
switch (operation)
{
case "+":
txtDisplay.Text = (result + Double.Parse(txtDisplay.Text)).ToString();
break;
case "-":
txtDisplay.Text = (result - Double.Parse(txtDisplay.Text)).ToString();
break;
case "X":
txtDisplay.Text = (result * Double.Parse(txtDisplay.Text)).ToString();
break;
case "/":
txtDisplay.Text = (result / Double.Parse(txtDisplay.Text)).ToString();
break;
default:
break;
}
result = Double.Parse(txtDisplay.Text);
operation = "";
Et le dernier :
Double result = 0;
String operation = "";
bool enter_value = false;
String firstnum, secondnum;
public MainPage()
{
this.InitializeComponent();
}
J'espère que cela pourra vous aider
Cordialement
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
26 juin 2018 à 17:49
26 juin 2018 à 17:49
Et quel est l'enchainement que tu veux faire?
Eaglewin
Messages postés
6
Date d'inscription
mardi 26 juin 2018
Statut
Membre
Dernière intervention
28 juin 2018
26 juin 2018 à 21:01
26 juin 2018 à 21:01
En fait, je voudrais faire un enchainement d'opérations sans cliquer sur la touche égal. Par exemple, si on touche une fois la touche diviser je voudrais calculer les deux nombres entrés précédemment et cela plusieurs fois. Je ne sais pas si je suis très clair, sinon référez vous au message qui a ouvert le sujet. J'espère que vous pourrez résoudre mon problème.
Bonne soirée
Cordialement
Bonne soirée
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
Modifié le 26 juin 2018 à 22:14
Modifié le 26 juin 2018 à 22:14
J'avais relu le premier message, mais je n'étais pas sûr d'avoir bien compris.
Le problème selon moi, est un problème récurrent chez les débutants.
Tu te sers de l'interface graphique comme source de données.
C# est un langage tout objet (tout ce que l'on utilise est un objet, tape
L'idée principale de la programmation objet est de spécialiser ses classes et de les faire travailler ensemble.
Imaginons une classe "Calculatrice"
Elle pourrait avoir une méthode SaisieChiffre qui prend un caractère en paramètre.
Cette méthode ajouterait le chiffre correspondant au nombre en cours.
Du coté de l'interface, tous les clicks des boutons représentant les chiffres appellent cette méthode
D'une part tu fais calculs sur des nombres et pas sur du texte. Ça parait logique non? Et pourtant, ça n'est pas ce que tu as codé.
En te servant de quelques variables tu peux stocker, un résultat temporaire (tant que égal n'est pas tapé), un opérateur intermédiaire et un nombre en cours.
En plus tu peux binder ton affichage sur le résultat ou sur une propriété que tu construis exprès.
Voir ici un aperçu du binding en WPF https://codes-sources.commentcamarche.net/faq/11277-apercu-du-binding-en-wpf
Et ici, un tour d'horizon de la programmation objet en C# https://codes-sources.commentcamarche.net/faq/11239-la-programmation-objet-appliquee-a-net-par-l-exemple-partie-1-sur-3
Pour les codes, j'ai tapé de tête, y'a p'tet une boulette ou 2, et j'ai pas gérés les chiffres après la virgule.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Le problème selon moi, est un problème récurrent chez les débutants.
Tu te sers de l'interface graphique comme source de données.
C# est un langage tout objet (tout ce que l'on utilise est un objet, tape
"n'importe quel texte".et intellisense va te proposer les quelques méthodes d'une instance de string.
L'idée principale de la programmation objet est de spécialiser ses classes et de les faire travailler ensemble.
Imaginons une classe "Calculatrice"
Elle pourrait avoir une méthode SaisieChiffre qui prend un caractère en paramètre.
Cette méthode ajouterait le chiffre correspondant au nombre en cours.
public double NombreEnCours {get; set;} = 0;
public void SaisieChiffre(char Chiffre)
{
int chiffre;
if (int.TryParse(Chiffre, out chiffre)
{
NombreEnCours *= 10 + chiffre;
}
}
Du coté de l'interface, tous les clicks des boutons représentant les chiffres appellent cette méthode
private void buttonChiffres_Click(object sender, RoutedEventArgs e)
{
bouton b = sender as Button;
if (b != null)
{
maCalculatrice.SaisieChiffre(b.Texte);
}
}
D'une part tu fais calculs sur des nombres et pas sur du texte. Ça parait logique non? Et pourtant, ça n'est pas ce que tu as codé.
En te servant de quelques variables tu peux stocker, un résultat temporaire (tant que égal n'est pas tapé), un opérateur intermédiaire et un nombre en cours.
- Si tu tapes égal, le résultat final sera le résultat temporaire "opéré" par le nombre en cours,
- si c'est un opérateur alors résultat temporaire sera le résultat temporaire "opéré" par le nombre en cours, et l'opérateur deviendra le nouveau tapé.
En plus tu peux binder ton affichage sur le résultat ou sur une propriété que tu construis exprès.
Voir ici un aperçu du binding en WPF https://codes-sources.commentcamarche.net/faq/11277-apercu-du-binding-en-wpf
Et ici, un tour d'horizon de la programmation objet en C# https://codes-sources.commentcamarche.net/faq/11239-la-programmation-objet-appliquee-a-net-par-l-exemple-partie-1-sur-3
Pour les codes, j'ai tapé de tête, y'a p'tet une boulette ou 2, et j'ai pas gérés les chiffres après la virgule.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Eaglewin
Messages postés
6
Date d'inscription
mardi 26 juin 2018
Statut
Membre
Dernière intervention
28 juin 2018
27 juin 2018 à 07:46
27 juin 2018 à 07:46
Bonjour, merci pour votre code qui m'a aidé. Pourriez vous me donner un exemple pour les variables où sera stocké le résultat temporaire car je ne sais pas trop comment m'y prendre. En effet, je suis débutant et collégien. Merci d'avance.
Bonne journée
Cordialement
Bonne journée
Cordialement
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
27 juin 2018 à 18:25
27 juin 2018 à 18:25
Un truc comme ça
class Calculatrice
{
public double NombreEnCours { get; set; } = 0;
public double Resultat { get; set; } = 0;
private double resultatTemporaire = double.NaN;//Nan => not a number
private string operateur = null;
public void SaisieChiffre(string Chiffre)
{
int chiffre;
if (int.TryParse(Chiffre, out chiffre))
{
NombreEnCours *= 10 + chiffre;
}
}
public void SaisieOperateur(string Operateur)
{
if (operateur == null)//on est au premier nombre
{
resultatTemporaire = NombreEnCours;
}
else
{
//On calcule l'opération précédente
CalculOperation();
}
//on remet le nombre en cours à zéro et on enregistre le nouvel opérateur
NombreEnCours = 0;
operateur = Operateur;
}
private void CalculOperation()
{
switch (operateur)
{
case "+":
resultatTemporaire += NombreEnCours;
break;
//etc
default:
//cas d'un opérateur non prévu
throw new Exception("Opérateur non codé");
}
}
public void SaisieEgal()
{
CalculOperation();
Resultat = resultatTemporaire;
//on RAZ les variables
NombreEnCours = 0;
operateur = null;
resultatTemporaire = double.NaN;
}
}
Eaglewin
Messages postés
6
Date d'inscription
mardi 26 juin 2018
Statut
Membre
Dernière intervention
28 juin 2018
27 juin 2018 à 19:29
27 juin 2018 à 19:29
Merci beaucoup, j'ai appris plein de choses grâce à vous ! Tout fonctionne merci encore !
Bonne soirée
Cordialement
Bonne soirée
Cordialement
Whismeril
Messages postés
18279
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 mars 2023
888
27 juin 2018 à 19:32
27 juin 2018 à 19:32
Je te conseille de suivre ce cours
https://tahe.developpez.com/dotnet/csharp/
Ça te prendra quelques jours, mais il te donnera de bonnes base en C#
https://tahe.developpez.com/dotnet/csharp/
Ça te prendra quelques jours, mais il te donnera de bonnes base en C#
Eaglewin
Messages postés
6
Date d'inscription
mardi 26 juin 2018
Statut
Membre
Dernière intervention
28 juin 2018
28 juin 2018 à 08:24
28 juin 2018 à 08:24
Merci beaucoup pour le conseil !
Cordialement
Cordialement


