Código
string texto = "2x-8(5+4)-1"; int h = 0; for (int i = 0; i < texto.Length; i++) // Bucle para recorrer letra por letra { if (texto[i].ToString() == ")") // Si la letra que estamos recorriendo es igual a ")" entonces.. { h--; // Bajamos el index de datos[] para q siga escribiendo las siguientes letras en el index q estaba antes continue; // salteamos la fase del bucle para q vuelva a generarse con el siguiente valor de i, ya q no queremos que luego al final del bucle agregue el parentesis en datos[h] } if (texto[i].ToString() == "(") // Si la letra q estamos recorriendo es igual a "(" entonces.. { h++; // Subimos el valor del index de datos[] para q empiece a escribir las letras del nuevo "conjunto" de parentesis, en un distinto index de datos[] continue; // Salteamos la fase del bucle para q se genere otra vez con el siguiente valor de i ya que no queremos que se escriba el parentesis } datos[h] += texto[i].ToString(); // Vamos agregando las letras } foreach (string r in datos) MessageBox.Show(r);
Entienden q quiero hacer? los mensajes q tendrian salir serian primero "2x-8-1" y el otro "5+4", es decir datos[0] tendra "2x-8-1" y datos[1] tendra "5+4"
Ese codigo con esa ecuacion funciona, pero la idea es q funcione para texto = "2x-8(5+3(-4+8(1+2)-56)-2)-87+1"
Que tendria q dejar en datos[0] = "2x-8-87+1", en datos[1] = "5+3-2" , en datos[2] = "-4+8-56" y datos[3] = "1+2"
Si sirve para todas estas, es porq anda bien:
2x-8(5+4)-1
-1(2x-8)
(2x-8)-1
2x-8(5+4)-1(3+2)-9+8
2x-8(5+4)-1(3+2(8-4)+5)-9+8
2x-8(5+4(2+7))-1(3+2(8-4)+5)-9+8
2x-8(5+4(2+7))-1(3+2(8-4(3+7))+5)-9+8
pd: No se preocupen por si salen los mensajes q tienen q salir y luego salen el resto en blanco hasta llegar a 50 q es el limite del array, eso no importa ya q lo tengo solucionado y tendra un valor q cambiara siempre para q quede justo.
Espero que alguien lo pueda hacer ya q despues de eso ya creo q puedo seguir adelante solo y esta quedando lindo el proyecto, espero q me ayuden!
pd: Arregle el codigo, espero q entiendan mejor ahora