drcmomo
Messages postés182Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention25 décembre 2009
-
2 nov. 2008 à 14:28
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
3 nov. 2008 à 08:20
Bonjour a tous,
Je ne sais pas si j'ai le droit de poser cette question sur ce site.
J'ai un petit soucis que j'ai un peu de mal à regler. Voila je suis entrain de developper un Frm qui contient une calculatrice, quand je rentre une expresion comme par exemple (3+5 j'obtient le résultat suivant : 8
Je voulais poser une condition : si l'utilisateur oublie une parenthése que l'envoi un message d'erreur
J'ai donc trouver cet exemple , mais il est en VB(je connais absolument rien en VB). Je voudrais savoir si quelqu'un peut bien m'aider a le traduire en C# si possible.
Merci de votre aide !
Merci d'avance
Function Interpreter(Equa As String, Car As String) As Byte
Interpreter = False
Dim i As Integer, Var As Integer
If Left(Equa, 1) "-" Then Equa "0" & Equa
Equa = Replace(Equa, "(-", "(0-")
Var = 0
i = 0
While i < Len(Equa)
i = i + 1 If Mid$(Equa, i, 1) "(" Then Var Var + 1 If Mid$(Equa, i, 1) ")" Then Var Var - 1
If Var < 0 Then GoTo TropParent
If Var = 32767 Then
MsgBox "Desolé ,il y a trop de profondeur de parentheses"
Exit Function
End If
Wend
If Var Then
TropParent:
MsgBox "Desolé , Vos parenthèses sont invalides"
Exit Function
End If
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 2 nov. 2008 à 14:54
Bonjour,
Je ne vois pas pourquoi écrire à ta place en un autre langage
Tu ne connais pas VB mais maitrise l'autre langage ?
OK
Voilà la traduction (à toi d'écrire dans le langage que tu mautrises) :
If Left(Equa, 1) "-" Then Equa "0" & Equa 'si le 1er caractère est "-" alors Equa = "0"
Equa = Replace(Equa, "(-", "(0-") 'on remplace "(-" par "(0-"
Var = 0
i = 0
While i < Len(Equa) 'tant que i es < que le nombre de caractères de Equa
i = i + 1 If Mid$(Equa, i, 1) "(" Then Var Var + 1 'si le caractère de rang i (dans Equa) = "(" alors Var = Var + 1 If Mid$(Equa, i, 1) ")" Then Var Var - 1 'si le caractère de rang i (dans Equa) = ")" alors Var = Var - 1
If Var < 0 Then GoTo TropParent ' si var < 0 ===>> aller à l'étiquette TropParent If Var 32767 Then ' si Var 32767 alors
MsgBox "Desolé ,il y a trop de profondeur de parentheses" ' afficher ce message
Exit Function ' et quitter la fonction
End If ' fin de si
Wend ' fin de la boucle tant que
If Var Then ' si var est <> 0 (donc True sous VB) alors
TropParent: ' là est l'étiquette TrpParent
MsgBox "Desolé , Vos parenthèses sont invalides" ' affichage de ce pessage
Exit Function ' on quitte la fonction
End If ' fin de si
Voilà (et ce n'était pas sorcier (quasiment du basic pur !...)
Il te reste à écrire celà dans le langage que tu maîtrises ... (pas difficile si tel est le cas) ...
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 3 nov. 2008 à 08:20
Salut,
Je te le traduit (pour m'entrainer)
Mais je ne suis pas sûr que cela soit le plus optimisé en C# car je débute encore dans ce langage.
NOTE: Si tout le code est présent:
<li>Si Interpreter = False pourquoi retourne un Byte et pas un Boolean
</li><li>Le paramètre Car n'est pas utilisé.</li>
Bref... j'espère que ce code ne sera pas trop faux.
public bool Interpreter(string Equa)
{
int var = 0;
int i = 0;