• Lunes 29 de Abril de 2024, 06:37

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - tannke

Páginas: 1 [2] 3 4 ... 7
26
C# / Re: Trabajar con arrays de distintos tipos de datos(C#)
« en: Lunes 20 de Septiembre de 2010, 12:32 »
Buenas, tenia por ahi un codigo utilizando el metodo de la burbuja para ordenar cualquier tipo de valor.
En el ejemplo solo están para ordenar en ascendiente y descendiente los tipos "string" y "double", pero si te fijas es muy sencillo añadir todos los demás, solo con crear un metodo booleano comparando cual de los dos valores es mayor.

Código: C#
  1.  
  2. class Program
  3.     {
  4.         static void Main(string[] args)
  5.         {
  6.             //prueba ordenar double ascendente
  7.             double[] matriz1 = { 2, 3, 5, 1, 4 };
  8.             ClaseMatriz<double>.Burbuja(matriz1, DoubleAscndente);
  9.             for (int i = 0; i < matriz1.Length; i++)
  10.                 Console.Write(matriz1[i] + " ");
  11.             Console.WriteLine();
  12.  
  13.             //prueba ordenar double descendiente
  14.             double[] matriz2 = { 2, 3, 5, 1, 4 };
  15.             ClaseMatriz<double>.Burbuja(matriz2, DoubleDesendiente);
  16.             for (int i = 0; i < matriz2.Length; i++)
  17.                 Console.Write(matriz2[i] + " ");
  18.             Console.WriteLine();
  19.  
  20.             //prueba ordenar STRING ascendente
  21.             string[] matriz3 = {"bb", "cc", "ee", "aa", "dd"};
  22.             ClaseMatriz<string>.Burbuja(matriz3, StringAscendiente);
  23.             for (int i = 0; i < matriz3.Length; i++)
  24.                 Console.Write(matriz3[i] + " ");
  25.             Console.WriteLine();
  26.  
  27.             //prueba ordenar STRING descendiente
  28.             string[] matriz4 = { "bb", "cc", "ee", "aa", "dd" };
  29.             ClaseMatriz<string>.Burbuja(matriz4, StringDescendiente);
  30.             for (int i = 0; i < matriz4.Length; i++)
  31.                 Console.Write(matriz4[i] + " ");
  32.             Console.WriteLine();
  33.  
  34.             Console.ReadLine();
  35.  
  36.         }
  37.  
  38.         public static bool DoubleAscndente(double x, double y)
  39.         {
  40.             return x > y;
  41.         }
  42.  
  43.         public static bool DoubleDesendiente(double x, double y)
  44.         {
  45.             return x < y;
  46.         }
  47.  
  48.         public static bool StringAscendiente(string x, string y)
  49.         {
  50.             return x.CompareTo(y) > 0;
  51.         }
  52.        
  53.         public static bool StringDescendiente(string x, string y)
  54.         {
  55.             return x.CompareTo(y) < 0;
  56.         }
  57.  
  58.     }
  59.  
  60.     class ClaseMatriz<Tip>
  61.     {
  62.         public delegate bool Tipoordenacion(Tip x, Tip y);
  63.  
  64.         public static void Burbuja(Tip[] m, Tipoordenacion comparar)
  65.         {
  66.             Tip temp;
  67.             int i, numElementos = m.Length;
  68.             bool s = true;
  69.  
  70.             while (s && (--numElementos > 0))
  71.             {
  72.                 s = false;
  73.  
  74.                 for (i = 1; i <= numElementos; i++)
  75.                 {
  76.                     if(comparar(m[i-1],m[i]))
  77.                     {
  78.                         temp= m[i-1];
  79.                         m[i-1] = m [i];
  80.                         m[i]=temp;
  81.                         s=true;
  82.                     }
  83.                 }
  84.             }
  85.         }
  86.     }
  87.  
  88.  

Espero te sirva.  Si tienes cualquier duda con el codigo avisa.  Saludos

27
C# / Re: Matriz Consola C#
« en: Martes 17 de Agosto de 2010, 23:38 »
Prueba con este algoritmo, no es la mejor solucion, pero el mejorarlo ya te lo dejo a ti.
Código: C#
  1. static void Main(string[] args)
  2.         {
  3.             int M = 3;     //con estas dos variables definimos N y M.
  4.             int N = 10;
  5.  
  6.             int[,] matriz = new int[N, M];
  7.             int cont = 0;
  8.  
  9.             //la creamos
  10.             for (int i = 0; i < N; i++)
  11.             {
  12.                 for (int a = 0; a < M; a++)
  13.                 {
  14.                     matriz[i, a] = cont;
  15.                     cont++;
  16.                 }
  17.             }
  18.  
  19.             //la escribimos
  20.             for (int i = 0; i < N; i++)
  21.             {
  22.                 for (int a = 0; a < M; a++)
  23.                 {
  24.                     Console.WriteLine("Matriz[{0},{1}] = {2}", i, a, matriz[i, a]);
  25.                 }
  26.             }
  27.            
  28.             //el algoritmo de inversion
  29.             int repeticiones = 0;
  30.             for (int i = 0; i < N; i++)
  31.             {
  32.                 for (int a = 0; a < M; a++)
  33.                 {
  34.                     int temp;
  35.                     temp = matriz[i, a];
  36.                     matriz[i, a] = matriz[N - i-1, M - a-1];
  37.                     matriz[N - i-1, M - a-1] = temp;
  38.                     repeticiones++;
  39.                     if (repeticiones == N * M / 2) break;
  40.                 }
  41.                 if (repeticiones == N * M / 2) break;
  42.                
  43.             }
  44.  
  45.             Console.WriteLine();
  46.             Console.WriteLine();
  47.  
  48.             //lo volvemos a esgribir
  49.  
  50.             for (int i = 0; i < N; i++)
  51.             {
  52.                 for (int a = 0; a < M; a++)
  53.                 {
  54.                     Console.WriteLine("Matriz[{0},{1}] = {2}", i, a, matriz[i, a]);
  55.                 }
  56.             }
  57.  
  58.             Console.ReadKey();
  59.         }
  60.  

saludos

28
C# / Re: Ayudenme a mejorar este codigo con algun clase
« en: Jueves 12 de Agosto de 2010, 11:40 »
Muy buenas, vamos por partes haber si puedo aclararte algo.
Respecto al problema de tener que declarar las variables dos veces es porque las declaras directamente dentro del try, y una vez sales de ese estas variables desaparecen, es decir solo valen para el try.
Podrias hacer:
Código: C#
  1.  
  2. private void CmdCalcular_Click(object sender, EventArgs e)
  3. {
  4. double dolar_, tipo_cambio, ganancia_, iva_, envio_, total, cantidad_;
  5. try
  6. {
  7. // primero intento el calculo con dolares
  8. dolar_ = Convert.ToDouble(TxtDolares.Text);
  9. tipo_cambio_ = Convert.ToDouble(TxtTipoCambio.Text);
  10. ganancia_ = Convert.ToDouble(TxtGanancia.Text);
  11. iva_ = 1 + (Convert.ToDouble(TxtIva.Text) / 100);
  12. envio_ = Convert.ToDouble(TxtEnvio.Text);
  13. total = 0;
  14. cantidad_ = Convert.ToDouble(TxtCantidad.Text);
  15. total = (dolar_ * cantidad_ * tipo_cambio_ * iva_) + (envio_ + ganancia_);
  16. LblTotal.Text = Convert.ToString(total);
  17. }
  18. catch (Exception ex)
  19. {
  20. // intena con pesos se le da prioridad al dolar
  21. try
  22. {
  23. tipo_cambio_ = Convert.ToDouble(TxtTipoCambio.Text);
  24. ganancia_ = Convert.ToDouble(TxtGanancia.Text);
  25. iva_ = 1 + (Convert.ToDouble(TxtIva.Text) / 100);
  26. envio_ = Convert.ToDouble(TxtEnvio.Text);
  27. total = 0;
  28. cantidad_ = Convert.ToDouble(TxtCantidad.Text);
  29. pesos_ = Convert.ToDouble(TxtPesos.Text);
  30. total = (pesos_ * cantidad_ * iva_) + (envio_ + ganancia_);
  31. LblTotal.Text = Convert.ToString(total);
  32. }
  33. catch ( Exception exx)
  34. {
  35. MessageBox.Show("Uno o mas datos no son validos");
  36. }
  37. }
  38. }
  39.  

En el caso que necesites una variable que puedas acceder desde todos los metodos(variable global), debes declararla fuera de ellos.

Ahora sobre tu primera pregunta, la de limpiar el form, entiendo que quieres utilizar un botón. Si se podria utilizar el mismo metodo, pero yo te recomiendo utilizar otro nuevo, algo asi:
Código: C#
  1.  
  2. private void Form1_Load(object sender, EventArgs e)
  3. {
  4. limpiar();
  5. }
  6.  
  7. private void BotonLimiar_Click(object sender, EventArgs e)
  8. {
  9. limiar();
  10. }
  11.  
  12. private void limpiar()
  13. {
  14. TxtIva.Text = "16";
  15. TxtTipoCambio.Text = "13";
  16. TxtCantidad.Text = "1";
  17. TxtEnvio.Text = "130";
  18. TxtGanancia.Text = "100";
  19. }
  20.  
  21.  
Ahun se puede simplificar mucho mas, pero esto te lo dejo a ti, espero te sea de utilidad. Un saludo

29
C# / Re: Abrir un archivo txt ya creado
« en: Miércoles 28 de Julio de 2010, 17:31 »
supongo que estas utilizando la clase streamwriter para escribir en el archivo. Bueno, este, al declararlo tiene varios constructores (opciones) y entre uno de ellos esta la opcion booleana append, si esta es false y el archivo esxiste este se sobreescribira y si es true y el archivo existe escribira al final de este. Un ejemplo de declaración podrian ser los siguientes:

StreamWriter escribir = new StreamWriter("direccion", true, Encoding.Default);

o sin usar el Encoding:

StreamWriter escribir = new StreamWriter("direccion", true);

Espero te sirva

30
C# / Re: While y OR
« en: Martes 27 de Julio de 2010, 20:16 »
El libro que yo tengo no dice eso (Microsoft C# Curso de programacion, de Fco. Javier Ceballos) para el que lo tenga, pagina 74:
Operadores lógicos:     && o & (AND),    || o | (OR),     !(NOT),     ^(XOR)

Operadores a nivel de bits:     &(AND),     |(OR),     ^(XOR),     <<(Carry izq.),     >>(carry der.)

test porque ya no sabia que pensar

Código: C#
  1. static void Main(string[] args)
  2.         {
  3.            
  4.             //provando XOR (amos a ver)
  5.  
  6.             string Value2;
  7.             int alarmaxux;
  8.  
  9.             //voy a provar los 4 casos posibles
  10.  
  11.             Value2 = null;
  12.             alarmaxux = 1;
  13.             if (Value2 != null ^ alarmaxux != 1) Console.WriteLine("string en nulo y int en 1");
  14.  
  15.  
  16.             Value2 = null;
  17.             alarmaxux = 5;
  18.             if (Value2 != null ^ alarmaxux != 1) Console.WriteLine("string en nulo y int diferente de 1");
  19.  
  20.  
  21.             Value2 = "No nulo";
  22.             alarmaxux = 1;
  23.             if (Value2 != null ^ alarmaxux != 1) Console.WriteLine("string NO nulo y int en 1");
  24.  
  25.  
  26.             Value2 = "No nulo";
  27.             alarmaxux = 5;
  28.             if (Value2 != null ^ alarmaxux != 1) Console.WriteLine("string NO nulo y int diferente de 1");
  29.  
  30.  
  31.             Console.ReadLine();
  32.         }
  33.  

31
C# / Re: While y OR
« en: Martes 27 de Julio de 2010, 15:11 »
Cita de: "Amilius"
El gorro de gnomo es el operador XOR. :)
+1

Tienes toda la razón! Habria jurado que no existía, hasta me hicistes desempolvar el libro de programación, jejejej. Supongo que la falta de costumbre en usarlo (creo que nunca lo utilicé).

Un Saludo

32
C# / Re: While y OR
« en: Lunes 26 de Julio de 2010, 18:28 »
cito:
Cita de: "Serj"
Asi que el simbolo || es XOR???
No.
Vuelvo a citar:
Cita de: "ProfesorX"
Me temo que el operador logico XOR (or exclusivo) no existe en C#. Es por eso que no obtienes el resultado que deseas.

Por lo tanto || és OR.

Otra manera de simular el XOR podria ser:

Código: C#
  1.  
  2. while ((Rango.Value2 == null && alarmaxux != 1) || (Rango.Value2 != null && alarmaxux ==1 ) )
  3. {
  4. }
  5.  

un saludo

33
C# / Re: windows forms mejorar presentacion
« en: Viernes 23 de Julio de 2010, 20:21 »
mira este ejemplo, puede que te interese:
http://www.mygnet.net/codigos/csharp/ne ... enger.2516

por si el enlace del desgargable no sigue activo, puedes descargartelo de aqui:
http://www.megaupload.com/?d=4B4TYR65

Un saludo

34
C# / Re: controles personalizados C# ¿?
« en: Miércoles 14 de Julio de 2010, 15:15 »

35
C# / Re: MDI child a MDI child
« en: Miércoles 23 de Junio de 2010, 15:01 »
Has provado con delegados y eventos?

Si necesitas mas informacion sobre ellos avisa. Saludos

36
C# / Re: contar palabras
« en: Miércoles 23 de Junio de 2010, 14:56 »
una manera podria ser usando lo función split:

char[] seps = {" "};
string[] letras = linea.Split(seps);

int palabras= letras.lenght;

saludos

37
C# / Re: Sincronización de USB-Serial ando perdido
« en: Martes 22 de Junio de 2010, 20:59 »
No se si sera la mejor forma pero ahora mismo solo se me ocurre esto. La idea seria crear varios hilos (threads o bakgrownworker) uno para cada puerto que quieras conectarte. Ahora tambien tenemos el problema que tienes que lanzar uno despues de otro (volverias a tener unos microsegundos de desfase) seguramente tambien para esto aya algo mejor para sincronizar los threads. Pero como no los domino mucho yo lo que haria es en cada uno de ellos poner al principio un "while( variable global booleana);" la variable debe estar en true antes de lanzar los hilos. Una vez lanzados todos cambias la variable a false y deberian salir del bucle while todos a la vez para empezar a ejecutar la rutina con los puertos.

Ya te digo seguro haya algo muuucho mejor que esto. Bueno, nada mas espero te sirva. Un saludo

38
C# / Re: Hora en un Label
« en: Martes 22 de Junio de 2010, 15:05 »
con esto obtienes la hora del sistema, podrias ponerlo en un Timer.tic y ya se te actualizaria cada x tiempo:

string HORA = DateTime.Now.TimeOfDay.ToString();

saludos

39
C# / Re: copiar datos a otro tex box dejando los anteriores
« en: Martes 15 de Junio de 2010, 23:10 »
Para evitarte la linea en planco puedes hacer esto:

if(textBox2.Text == null)
      textBox2.Text+= textBox1.Text;
else
      textBox2.Text+= "rn" + textBox1.Text;

Saludos

40
C# / Re: busquedas en c#
« en: Martes 15 de Junio de 2010, 23:03 »
te dejo un ejemplo que realice hace tiempo. solo hay 2 el secuencial y el binario.
Si ves que en los dos metodos te da distinta la posición del lato buscado en la matriz, es porque el primero buscamos con la matriz desordenada, y en el segundo (si no esta ordenada) la ordenamos, por lo que los datos cambian de posición en la matriz:

Código: C#
  1.  static void Main(string[] args)
  2.         {
  3.             string[] matriz = { "uno", "dos", "cinco", "seis", "cuatro", "nueve", "tres", "siete", "ocho", "diez" };
  4.  
  5.             int a= Busqueda_S(matriz, "cinco");
  6.             Console.WriteLine("busqueda lineal = {0}", a);
  7.  
  8.             int b = Busqueda_B(matriz, "cinco", false);
  9.             Console.WriteLine("busqueda binario = {0}", b);
  10.  
  11.             Console.ReadLine();
  12.         }
  13.  
  14.  
  15.         //Busqueda secuencial:
  16.         //Si el dato buscado está devuelve la posición en la matriz
  17.         //Si no está devuelve -1
  18.         /// <summary>
  19.         ///
  20.         /// </summary>
  21.         /// <param name="matriz">Matriz de datos</param>
  22.         /// <param name="dato">dato a buscar en la matriz</param>
  23.         /// <returns>Devuelve la posición del dato, y -1 si el dato no esta.</returns>
  24.         public static int Busqueda_S(string[] matriz, string dato)
  25.         {
  26.             if (matriz.Length == 0) return -1;
  27.  
  28.             for (int i = 0; i < matriz.Length; i++)
  29.             {
  30.                 if (matriz[i] == dato) return i;
  31.             }
  32.             return -1;
  33.         }
  34.  
  35.         //Busqueda binaria:
  36.         //Si el dato buscado está devuelve la posición en la matriz
  37.         //Si no está devuelve -1
  38.         /// <summary>
  39.         ///
  40.         /// </summary>
  41.         /// <param name="matiz">matriz de datos</param>
  42.         /// <param name="dato">dato a buscar en la matriz</param>
  43.         /// <param name="ordenado">indica si la matriz esta ordenada(true) o (false) si esta desordenada</param>
  44.         /// <returns>Devuelve la posición del dato, y -1 si el dato no esta.</returns>
  45.         public static int Busqueda_B(string[] matiz, string dato, bool ordenado)
  46.         {
  47.             if (!ordenado) Ordenar(matiz);
  48.  
  49.  
  50.             if (matiz.Length == 0) return -1;
  51.             int mitad, inf = 0, sup = matiz.Length - 1;
  52.  
  53.             do
  54.             {
  55.                 mitad=(inf + sup)/2;
  56.                 if (dato.CompareTo(matiz[mitad]) > 0) inf = mitad + 1;
  57.                 else sup=mitad-1;
  58.             }
  59.             while(matiz[mitad] != dato && inf <= sup);
  60.  
  61.             if(matiz[mitad]== dato)
  62.                 return mitad;
  63.             else
  64.                 return-1;
  65.            
  66.  
  67.         }
  68.  
  69.  
  70.         //ordenamos (metodo de la burbuja)
  71.         private static void Ordenar(string[] matriz)
  72.         {
  73.             string aux;
  74.             int i, num_elem = matriz.Length;
  75.             bool s = true;
  76.  
  77.             while (s && (num_elem > 0))
  78.             {
  79.                 s = false;
  80.                 for (i = 1; i < num_elem; i++)
  81.                 {
  82.                     if (matriz[i - 1].CompareTo(matriz[i]) > 0 )
  83.                     {
  84.                         aux = matriz[i - 1];
  85.                         matriz[i - 1] = matriz[i];
  86.                         matriz[i] = aux;
  87.                         s = true;
  88.                     }
  89.                 }
  90.             }
  91.  
  92.         }
  93.     }
  94.  

espero te sea util

41
C# / Re: Explorador de Carpetas en windows
« en: Miércoles 9 de Junio de 2010, 22:35 »
echale un vistazo a este link. http://msdn.microsoft.com/es-es/library ... 90%29.aspx

Si no te soluciona el problema avisa e intentaremos echarte una mano. un saludo

42
C# / Re: Evento Comun para Matriz textbox??
« en: Miércoles 9 de Junio de 2010, 22:31 »
Bueno, el caso es que yo lo prové hace tiempo con botones, seguramente sera lo mismo, y yo en aquella hice un evento común a todos ellos de la siguiente manera:

Código: C#
  1.  
  2. //esto en el mismo bucle donde creaba los botones
  3. //supongo que se puede hacer a parte tambien
  4. this.buttons[i, j].Click += new EventHandler(bt_Click);
  5.  
  6.  
Código: C#
  1.  
  2. //este seria el evento comun a todos:
  3. protected void bt_Click(object sender, EventArgs e)
  4.         {
  5.             Button bt = (Button)sender;
  6.             textBox1.Text = "Has hecho click en el botón " + bt.Name;
  7.         }
  8.  
  9.  

y si quisieras hacerlo uno por uno, donde creo que tienes el fallo es en: Grilla[y,x].MouseMove += new eventHandler(Grilla[y,x]_MouseMove)
(donde en negrita y subrallado) ya que aqui tendrias que poner el nombre de la funcion que quieres que llame el evento y aki ya si me has pillado pq no tengo ni idea ahora mismo de como se podria hacer.

Espero te sirva lo primero. Un saludo

43
C# / Re: Manejo de los CheckBox
« en: Miércoles 9 de Junio de 2010, 15:51 »
Otra manera de hacerlo es aprovechando el retorno del .chequed para aplicarlo al Enabled:

Código: C#
  1.  
  2. private void checkBox1_CheckedChanged(object sender, EventArgs e)
  3.         {
  4.             panel1.Enabled = checkBox1.Checked;
  5.         }
  6. // o si lo quieres al reves:
  7.  
  8. private void checkBox1_CheckedChanged(object sender, EventArgs e)
  9.         {
  10.             panel1.Enabled = !checkBox1.Checked;
  11.         }
  12.  
  13.  

Saludos

44
C# / Re: Reemplazar contrabarras en un string
« en: Miércoles 2 de Junio de 2010, 17:01 »
Bueno por lo que tengo entendido el \ en un string es la manera de representar la . Ahora mismo no se si es o no caracter de escape, yo siempre he pensado que se ponia asi para evitar (conflicto o confusion) que si despues de la  hubiera una 'n'  tipo (string rut= c:nueva carpeta;) esa barra se representaria como un salto de linea. Es mas, si tu ese string que te devuelve con \ lo escribes en pantalla o en un .txt te lo hara solo con una barra.

A todo esto, teoricamente no deberia darte problemas para abrirte la imagen con esa ruta devuelta. Pero bueno, mucho caso tampoco no me hagas estos dias que estoy algo espesito.

Esto creo no es exactamente lo que preguntas, pero una manera de escribir una ruta (manualmente) sin tener que poner la \ es precediendo de @:

Código: C#
  1. string ruta= @"c:Mis documentosmi carperami otra carperael archivo.jpg";
  2.  



Un saludo

45
C# / Re: Separar cadena y contar los bloques
« en: Miércoles 2 de Junio de 2010, 16:39 »
Cita de: "Jeysscarr"
Lo que si queda claro es la gran solidaridad!  :beer:

+1 :beer:

Y las multiples maneras que puede haber de resolver un problema.
Un saludo a los dos :)

46
C# / Re: Contador de caracteres NO alfanumericos
« en: Miércoles 2 de Junio de 2010, 16:35 »
No te creas que es tanto, mira aqui te lo posteo comleto, solo que esta vez al revés. Si no me equivoco (que ando algo espeso desde hace unos dias) aquí estan en el 'if' todos los alfanumericos, por lo que en el 'else' estaian los no alfanumericos:

Código: C#
  1. static void Main(string[] args)
  2.         {
  3.              string  texto = Console.ReadLine();
  4.              int Alfanumericos = 0;
  5.              int NOalfanumericos = 0;
  6.  
  7.              for (int i = 0; i < texto.Length; i++)
  8.              {
  9.                  char a = texto[i];
  10.  
  11.                  //Estos  serian los alfanumericos (mayusculas, minusculas, acentuados, con dieresis, etc)
  12.                  if ((a > 47 & a < 57) | (a > 64 & a < 91) | (a > 96 & a < 123) | (a > 192 & a != 215 & a != 222 & a != 247 & a != 248 & a != 254))
  13.                      Alfanumericos++;
  14.  
  15.                  //Pues aqui los no alfanumericos
  16.                  else NOalfanumericos++;
  17.              }
  18.  
  19.              Console.WriteLine("Total Alfanumericos: {0}", Alfanumericos);
  20.              Console.WriteLine("Total NO Alfanumericos: {0}", NOalfanumericos);
  21.              Console.ReadKey();
  22.         }
  23.  

Espero te sea util. No creo que sea muy largo, ya solo te quedaría adaptarlo a tu winform. Un saludo

47
C# / Re: Contador de caracteres NO alfanumericos
« en: Martes 1 de Junio de 2010, 20:11 »
bueno, te lo pongo en modo consola, en este caso leo el texto con un readline(), lo tuyo seria lo mismo pero con texbox1.text. Bueno mas o menos es un ejemplo para que te puedas hacer una idea, en este caso los caracteres que no cuenta son los de la ( 'a' a la 'z') de la ('A' a la 'Z') y del ( '0' al '9') es decir, letras con acentos, la 'ñ', etc los contaria como NO alfanumeicos. Pero weno, esto es cojerte el codigo ANSI o ASCII e ir metiendo ahi los que no quieras que te cuenten

Va el ejemplo y luego lo explico:

Código: C#
  1. string texto = Console.ReadLine();
  2.             int numero = 0;
  3.  
  4.             for (int i = 0; i < texto.Length;i++ )
  5.             {
  6.                 char a=texto[i];
  7.                 if ((a < 48) | (a >57 & a<65) | (a>90 & a<97) | (a>122))
  8.                 {
  9.                     numero++;
  10.                 }
  11.             }
  12.             Console.WriteLine(numero);
  13.             Console.ReadLine();
  14.  

bucle con tantas repeticiones como caracteres tenga la frase. ('a' es el caracter que comparamos) y la comparación la hacemos al nivel char como caracter ASII. Bueno, no se como explicar muy bien, la cuestión es ir metiendo en el 'if' todos los caracteres que no sean alganumericos, o si te resulta mas facil hacerlo al revés, meter los alfanumericos deseados y en ese caso no contar en el if sino en el else.

Bueno, se que no explique nada bien, espero que almenos veas la idea de hacerlo.

Si no lo entiendes avisa, alomejor en otro momento estoy un poco mas inspirado. Saludos

48
C# / Re: Separar cadena y contar los bloques
« en: Martes 1 de Junio de 2010, 18:23 »
Me alegro que lo pudieras solucionar. De todos modos estuve testeando el algoritmo que te pasé antes y a mi no me falla. Te adjunto un jpg con algunas de ellas. Por lo demás aqui estamos para lo que necesites.

Un saludo

49
C# / Re: Separar cadena y contar los bloques
« en: Lunes 31 de Mayo de 2010, 15:40 »
bueno, si entendí bien lo que preguntas (contar 1 para cada grupo de caracteres iguales )el siguiente codigo podria ayudarte.

Código: C#
  1. string text = Console.ReadLine();       //leemos la entrada
  2.  
  3.            
  4.             char temp = 'a';                        //caracter temporal diferente a cualquier usado
  5.             int numero = 0;
  6.            
  7.             for (int i = 0; i < text.Length; i++)   //bucle con tantas repeticiones como caracteres hemos leido
  8.             {
  9.                 if (temp != text[i])                //si el temporar es distinto entonces:
  10.                 {
  11.                     numero++;                       //sumamos 1
  12.                     temp = text[i];                 //guardamos el char actual para compararlo con el siguiente
  13.                 }
  14.             }
  15.             Console.WriteLine(numero);              // resultado
  16.             Console.ReadKey();
  17.  

Bueno, esta explicado mas o menos lo que hace, si necesitas algo solo avisa. Espero te sirva. Un Saludo.

50
C# / Re: Codigo similar al kbhit()
« en: Miércoles 26 de Mayo de 2010, 16:53 »
Si no entendi mal lo que preguntas el codigo que postee hace lo que estas preguntando. Seguramente te estes equivocando de ciclo. Si te fijas, en el metodo Main hay un bucle " while (bandera)". Ahi es donde tienes que meter tu codigo. Este ciclo se repite mientras no se presione la tecla "s".

Si te fijas, un poco mas abajo en el metodo "hilo()", ahi te encuentras otro while(true). Este bucle solo se encarga de leer las teclas presionadas. Cada vez que se presiona una tecla, salta al "if"  este compara la tecla presionada, si es la deseada, en este caso "s" cambia el valor de "bandera" haciendo que el ciclo while(bandera) deje de repetirse. A la vez, con el break; salimos del ciclo while(true) y se cierra el hilo creado.   Si la tecla no fuera la "s" entonces no entra en el 'if' y vuelve al principio a la espera que se presione una tecla.

Espero sea esa la duda, sino avisa. Saludos

Páginas: 1 [2] 3 4 ... 7