none
almacenar caracteres en una matriz char RRS feed

  • Pregunta

  • Hola, estoy realizando un programa el cual contiene un metodo llamado "compararCadenas" este recibe como parametros a 2 string(cadena1, cadena2), lo que necesito para completar mi programa es almacenar los caracteres(separados) de cadena1 en una matriz de tipo char, ejemplo:

    si cadena1 contubiera...

    cadena1 = "Hola";

    la matriz char contendria...

    H   o    l   a // cada caracter por separado

    Aqui esta mi codigo, por si tambien ven que estoy mal en algo pueden ayudarme :). El metodo debe devolver 0 si ambas cadenas son iguales, 1 si cadena1 es mayor que cadena2 o 2 si cadena2 es mayor a cadena1. Aqui esta el metodo

            static int compararCadenas(string cadena1, string cadena2, int n)
            {
                //Crear una matriz con los caracteres de una cadena
                char[] b1 = new char[cadena1.Length];
                char[] b2 = new char[cadena2.Length];
    
                char car1, car2; int cont1 = 0, cont2 = 0, i = 0, retornar = 0, bucle2;
    
                if (cadena1.Length > cadena2.Length) bucle2 = cadena1.Length;
                else bucle2 = cadena2.Length;
    
                if (n < cadena1.Length || n < cadena2.Length)
                {
                    //Repetir hasta obtener la matriz  menor
                    for (i = 0; i < n; i++)
                    {
                        // almacenar en cada variable el valor de un caracter
                        car1 = b1[i];
                        car2 = b2[i];
    
                        //Aumentar el contador correspondiente
                        if (Convert.ToInt32(car1) > Convert.ToInt32(car2))
                            cont1++;
                        else
                            cont2++;
    
                    }
                    //Retornar un valor
                    if (cont1 == cont2) retornar = 0;
                    if (cont1 > cont2) retornar = 1;
                    if (cont1 < cont2) retornar = 2;
                }
                cont2 = 0; cont1 = 0;
                if(n > cadena1.Length || n > cadena2.Length)
                {
                    for(i = 0; i < bucle2; i++)
                    {
                        car1 = b1[i];
                        car2 = b2[i];
    
                        if (Convert.ToInt32(car1) > Convert.ToInt32(car2)) cont1++;
                        if (Convert.ToInt32(car1) < Convert.ToInt32(car2)) cont2++;
                    }
                    if (cont1 == cont2) retornar = 0;
                    if (cont1 > cont2) retornar = 1;
                    if (cont1 < cont2) retornar = 2;
    
                }
    
                return retornar;
    
            } 



    miércoles, 22 de noviembre de 2017 21:54

Respuestas

  • Buenas,

    No acabo de entender muy bien lo que quieres hacer, pero para convertir un string en un array de char, puedes hacerlo asi:

    char[] myChar = theString.ToCharArray();

    Cual es la finalidad de hacer ese metodo? siempre puedes usar Equals para comparar cadenas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    miércoles, 22 de noviembre de 2017 22:14

Todas las respuestas

  • Buenas,

    No acabo de entender muy bien lo que quieres hacer, pero para convertir un string en un array de char, puedes hacerlo asi:

    char[] myChar = theString.ToCharArray();

    Cual es la finalidad de hacer ese metodo? siempre puedes usar Equals para comparar cadenas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    miércoles, 22 de noviembre de 2017 22:14
  • Un tipo string contiene una secuencia de caracteres a los que puedes acceder mediante su posición.

    static int compararCadenas(string string1, string string2, int n)
    {
    	//Obtener índice máximo de lectura
    	int length = Math.Min(Math.Max(string1.Length, string2.Length), n);
    	int value1 = 0, value2 = 0;
    	for (int i = 0; i < length; i++)
    	{                
    		value1 += i < string1.Length ? (int)string1[i] : 0;
    		value2 += i < string2.Length ? (int)string2[i] : 0;
    	}
    
    	return value1 == value2 ? 0 : value1 > value2 ? 1 : 2;
    }

    - Test

    MessageBox.Show(compararCadenas("AAA", "AAAB", 3).ToString());
    //Resultado: 0. Se comprende que el último argumento define la cantidad de caracteres a comparar

    miércoles, 22 de noviembre de 2017 22:53
  • es que no me di a entender, pero a pesar de eso me diste la respuesta indicada : )
    miércoles, 22 de noviembre de 2017 23:53