Conversion vb to C#

drcmomo Messages postés 182 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 25 décembre 2009 - 2 nov. 2008 à 14:28
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Derniè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

2 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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) ...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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;

  if (Equa.Substring(0, 1) == "-")
  {
      Equa = String.Concat("0", Equa);
  }
  Equa = Equa.Replace("(-", "(0-");

  while ((i < Equa.Length) && (var >= 0) )
  {
      if (Equa.Substring(i, 1) == "(")
      {
          var += 1;
      }
      if (Equa.Substring(i, 1) == ")")
      {
          var -= 1;
      }
     
      i++;
  }
 
  if (var != 0)
  {
      MessageBox.Show("Desolé , Vos parenthèses sont invalides");
     
  }
  if (var == 32767)
  {
      MessageBox.Show("Desolé ,il y a trop de profondeur de parentheses");
  }
  return (var == 0);

}
, ----
[../code.aspx?ID=41455 By Renfield]

@+: Ju£i€n
Pensez: Réponse acceptée
0
Rejoignez-nous