CLR: .Net / Mono / Boo / Otros CLR > C#

 Separar termino de un string y hacer distributiva

(1/1)

Yakuza:
Necesito hacer 2 procedimientos, uno hara una distributiva con un numero por lo q esta dentro de un parentesis, eso del parentesis y el numero iran en el parametro, pero para poder hacer esa distributiva seria mejor antes hacer pasar el string de los numeros en el parentesis por otro procedimiento para q separe cada numero y los devuelva en un array. Con eso se haria mas facil la distributiva pienso.
Estoy trabajando con strings asique habra q convertir.

La idea es hacerlo algo asi:


--- Código: C# --- public double Distributiva(double mult, string sParentesis){    string[] terminos = sTerminos(sParentesis);    double resultado = 0;   foreach (string term in terminos)   {      resultado += double.Parse(term) * mult;   }     return resultado;} public string[] sTerminos(string sParentesis){ // cri cri, cri cri xD }  
Recien me inspire y ya hice el primero CREO y lo hice aca no se si esta bien.

Espero q alguien me complete el otro y ya queda

Ejemplo:  mult = 2  y sParentesis = "6+5+4-2+3-7+8"

Haria: (2*+6) + (2*+5) + ....

Nadie me ayuda a completar ese codigo?
Quedaria completar la funcion sTerminos() y si pueden ver como hacer en la distributiva, en el bucle foreach ese si term es igual a un string q sea con x por ejemplo "4x", ahi da error asique habria que hacerle un if por ahi y talvez q vaya a otro procedimiento para hallar 3 por 4x por ejemplo.

Espero que uno este muy aburrido para ayudarme por favor

alexg88:
Esta podría ser una solución, aunque se puede mejorar, pero funciona.


--- Código: C# --- public static string[] sTerminos(string sParentesis)        {             List<string> cadenas = new List<string>();            string cadenaaux;            int indiceant = 0, indicepos = 0, total = 0;            total = sParentesis.Length;             if (sParentesis.Length == 0)                return null;            indicepos = sParentesis.IndexOfAny(new Char[] { '+', '-' }, 1);            if (indicepos != -1)            {                cadenas.Add(sParentesis.Substring(0, indicepos));                indiceant = indicepos;                 while (total > indiceant)                {                    indicepos = sParentesis.IndexOfAny(new Char[] { '+', '-' }, indiceant + 1);                    if (indicepos != -1)                    {                        cadenas.Add(sParentesis.Substring(indiceant, indicepos - indiceant));                        indiceant = indicepos;                    }                    else                    {                        cadenas.Add(sParentesis.Substring(indiceant, total - indiceant));                        indiceant = total;                    }                }            }            else cadenas.Add(sParentesis);                                    return cadenas.ToArray();                               }  

Yakuza:
Gracias loco! sos un genio!, quedaria lo de multiplicar cuando hay x en la parte del procedimiento Distributiva pero veo si puedo hacerlo yo, pero si te aburres.. ya sabes je, gracias!

Navegación

[0] Índice de Mensajes

Ir a la versión completa