Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Edu en 20 Marzo 2011, 01:02 am



Título: Ayuda, corregir un codigo :S
Publicado por: Edu en 20 Marzo 2011, 01:02 am
Bueno la idea es q me salga a mi solo, pero no me sale :/

Código
  1. string Miembro1 = "2x-5(65x-8(3-8+5x)-9)+3"
  2. string[] a = new string[10];
  3.         int h = 0;
  4.           string s;
  5.           bool sigue = false;
  6.  
  7.           if (Miembro1.Contains("("))
  8.           {
  9.               for (int i = 1; i < Miembro1.Length; i++)
  10.               {
  11.                   try
  12.                   {
  13.                       if (Miembro1.IndexOf("(", i, i) != -1)
  14.                       {
  15.  
  16.  
  17.                           s = Miembro1.Substring(Miembro1.IndexOf("(", i));
  18.                           for (int k = 1; k < s.Length; k++)
  19.                           {
  20.  
  21.  
  22.                               if (s.Substring(1, k).EndsWith(")"))
  23.                               {
  24.                                   if (sigue == false) { h++; break; }
  25.                                   else { sigue = true; }
  26.                               }
  27.  
  28.                               if (s.Substring(1, k).EndsWith("("))
  29.                               {
  30.  
  31.                                   sigue = true;
  32.                               }
  33.  
  34.  
  35.                               a[h] = s.Substring(1, k);
  36.  
  37.                           }
  38.  
  39.                       }
  40.                   }
  41.                   catch { }
  42.  
  43.               }
  44.           }
  45.  
  46.  foreach (string r in a)
  47.     MessageBox.Show(r);
  48.  
  49.  

Quiero q en este caso por ejemplo salgan 2 mensajes, uno q diga "65x-8(3-8+5x)-9" y el otro q diga "3-8+5x"

Si me entienden lo q quiero hacer se daran cuenta q quiero q sirva para otros por ejemplo "2x4(-6+9)" y ahi largaria solo un mensaje..
Y si tiene uno como "6x-8+3(48x-8(6-2(1+7)+2)-8)" q haga lo mismo..

Pero creo q si arreglan mi codigo para q ande con la ecuacion q pido al principio, ya andara para esos otros, asique si pudieran arreglarlo les agradeceria mucho!

pd: Ven q use el Try, esq me daba un error, talvez lo pueden hacer q funcione sin ese error no se :S


Título: Re: Ayuda, corregir un codigo :S
Publicado por: Xephiro en 20 Marzo 2011, 06:18 am
Trata descomponiendo tu ecuacion con el metodo Split, a ver si con eso se te aclara un poco mas la forma de resolver tu problema.


Título: Re: Ayuda, corregir un codigo :S
Publicado por: Edu en 20 Marzo 2011, 14:48 pm
Esqe para otras cosas si use el split(), solo q en este caso se me complica, ya q tengo "(" y ")" y seria un desorden total


Título: Re: Ayuda, corregir un codigo :S
Publicado por: Xephiro en 20 Marzo 2011, 15:11 pm
Esqe para otras cosas si use el split(), solo q en este caso se me complica, ya q tengo "(" y ")" y seria un desorden total

Yo creo que haces un seguimiento en forma mental de lo que va pasando no tendrías que desordenare tanto.

primero realizas un Split de los "("

y luego los datos que se separaron con el primer Split los divides todos con un segundo Split para los ")" y vas analizando de adelante hacia atrás los datos con ) y de atras hacia adelante los datos con (, creo que si pules un poco mas esa idea tendría que resultar.


Título: Re: Ayuda, corregir un codigo :S
Publicado por: Edu en 20 Marzo 2011, 15:18 pm
Ja no se, me entrevero y no funciona xD