elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Alguien q me corrija el codigo..?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alguien q me corrija el codigo..?  (Leído 4,498 veces)
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Alguien q me corrija el codigo..?
« en: 26 Marzo 2011, 01:28 am »

He intentado de muchas formas hacer esto y hay otro post con esa otra idea pero esta es mejor solo que me anda a veces :S

Código
  1.  
  2. string texto = "2x-8(5+4)-1";
  3.  
  4. string[] datos = new string[50];
  5. int h = 0;
  6.  
  7.     for (int i = 0; i < texto.Length; i++) // Bucle para recorrer letra por letra
  8.      {
  9.                   if (texto[i].ToString() == ")")  // Si la letra que estamos recorriendo es igual a ")" entonces..
  10.                      {    
  11.                          h--;  // Bajamos el index de datos[] para q siga escribiendo las siguientes letras en el index q estaba antes
  12.                          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]
  13.                      }
  14.  
  15.                   if (texto[i].ToString() == "(") // Si la letra q estamos recorriendo es igual a "(" entonces..
  16.                      {
  17.                           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[]
  18.  
  19.                           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
  20.                       }
  21.  
  22.          datos[h] += texto[i].ToString(); // Vamos agregando las letras
  23.  
  24.      }
  25.  
  26.  
  27.      foreach (string r in datos)
  28.            MessageBox.Show(r);
  29.  
  30.  

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


« Última modificación: 26 Marzo 2011, 18:23 pm por XXX-ZERO-XXX » En línea

DaasCook

Desconectado Desconectado

Mensajes: 53


Maximum Trolling!


Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #1 en: 26 Marzo 2011, 02:00 am »

¡Qué desorden de código hermano!.

Te recomendaría que leyeras un manual al menos básico sobre C#, éste te recomendaría encarecidamente, antes de volver a hacer un código así.


En línea

for (int i = Trolling.MaxVal; i > Trolling.MinValue; i--) {
    Forum.Answer = "Don't feed the troll"; }
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #2 en: 26 Marzo 2011, 15:35 pm »

Jajaja xD q tiene de mal? es la idea q me lo corrijan, vs q sabes mas talvez me podes echar una mano ;)


pd: Ese codigo esta hecho para q entiendan q quiero hacer, el verdadero codigo tiene muchas mas cosas, pero no digo q talvez me vendria bien leerme ese manual.. por segunda vez..
En línea

.mokk.

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #3 en: 26 Marzo 2011, 17:02 pm »

Porque el for lo inicias desde 1 ? , si se empieza desde la posicion 0, yo cambiando eso ya me anda asi como tu lo dices y me da el resultado bien como lo indicas para el string "2x-8(5+3(-4+8(1+2)-56)-2)-87+1"

P.D. El codigo lo pase a Java, ya que no tengo C#, pero no hay muchas diferencia en la sintaxis
En línea

Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #4 en: 26 Marzo 2011, 18:20 pm »

Ya lo modifique en el post principal, pero por ejemplo para esta ecuacion no anda: 2-8(2x-5(4+8)-2(8-3)-86+84)-96
En línea

.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #5 en: 26 Marzo 2011, 22:27 pm »

Esto te puede ayudar tengo problemas con el orden pero despues esta todo bien:

 
Código
  1. //La exprecion a evaluar
  2.            string Cadena = this.textBox1.Text;//colocar aqui la expresion a evaluar
  3.  
  4.            //Convertir a un array de "char"
  5.            char[] texto;
  6.            texto = Cadena.ToCharArray();
  7.  
  8.            string[] datos;
  9.  
  10.            //Contendra los indices donde se encuentran los "("
  11.            List<int> Niveles = new List<int>();
  12.  
  13.            for (int i = 0; i < texto.Length; i++)
  14.            {
  15.                if (texto[i].ToString() == "(")
  16.                    Niveles.Add(i);
  17.            }
  18.  
  19.            //ahora que ya conocemos el total de niveles inicializamos el tamaño de datos[]
  20.            datos = new string[Niveles.Count + 1];
  21.  
  22.            //comenzamos a llenar los datos pero comenzando desde el menor valor los caracteres que ya recorrimos los llenamos con espacios en blanco
  23.            for (int i = datos.Length - 1; i >= 0; i--)
  24.            {
  25.                datos[i] = "";
  26.  
  27.                bool termino = false;//variable que indica si termino la busqueda de ")"
  28.  
  29.                if (i > 0)
  30.                {
  31.                    for (int j = Niveles[i - 1]; j < texto.Length; j++)
  32.                    {
  33.                        if (texto[j] == char.Parse(")"))
  34.                        {
  35.                            termino = true;
  36.                        }
  37.  
  38.                        if (texto[j] != char.Parse("(") && texto[j] != char.Parse(")") && texto[j] != char.Parse(" "))
  39.                        {
  40.                            datos[i] = datos[i] + texto[j].ToString();
  41.                        }
  42.  
  43.                        texto[j] = char.Parse(" ");
  44.  
  45.                        if (termino)
  46.                            break;
  47.                    }
  48.                }
  49.                else
  50.                {
  51.                    for (int j = 0; j < texto.Length; j++)
  52.                    {
  53.                        if (texto[j] != char.Parse("(") && texto[j] != char.Parse(")") && texto[j] != char.Parse(" "))
  54.                        {
  55.                            datos[i] = datos[i] + texto[j].ToString();
  56.                        }
  57.                    }
  58.                }
  59.            }
  60.  
  61.            foreach (string r in datos)
  62.                MessageBox.Show(r);
En línea

Simplemente .::IT::.
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #6 en: 26 Marzo 2011, 23:13 pm »

Lo hiciste recien o lo tenias en algun codigo viejo? Sos un kapo! gracias!!!
No era nada facil, me quedo tranquilo xD
En línea

.::IT::.

Desconectado Desconectado

Mensajes: 167



Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #7 en: 26 Marzo 2011, 23:21 pm »

Recien lo hice pero para que es no entiendo!!!!!!!!!!!!!!
En línea

Simplemente .::IT::.
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Alguien q me corrija el codigo..?
« Respuesta #8 en: 26 Marzo 2011, 23:27 pm »

Para ordenar una ecuacion para q quede formal y luego calcular el valor de x, pero todo eso lo vere de a poco, ahora ya tengo separado los parentesis q es lo q queria, y ahora intentare simplificar y ver como hago las cuentas para simplificar :S
Despues q la ecuacion queda formal es decir ax^2+bx+c o ax+b ya lo calcula mi codigo, esta quedando lindo :P gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Alguien sabe pasar codigo C a ensamblador ?
Ingeniería Inversa
Thor 2 5,540 Último mensaje 11 Diciembre 2004, 20:21 pm
por Thor
alguien puede ayudarmecon este codigo
Programación Visual Basic
pedraosone 7 2,425 Último mensaje 5 Octubre 2007, 01:57 am
por Spider-Net
¿Alguien sabe que hace este código?
Seguridad
Demenus 4 4,194 Último mensaje 15 Mayo 2010, 22:44 pm
por [L]ord [R]NA
Ejercicio realizado por mi, alguien que me corrija.
Programación C/C++
elkiy 0 3,639 Último mensaje 1 Octubre 2012, 21:06 pm
por elkiy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines