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
Ir a la versión completa