Foros del Web » Programación para mayores de 30 ;) » .NET »

Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlos

Estas en el tema de Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlos en el foro de .NET en Foros del Web. Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlos. El número resultante de la suma ha de ser capicúa. ejemplo : ...
  #1 (permalink)  
Antiguo 01/12/2010, 12:36
 
Fecha de Ingreso: noviembre-2008
Mensajes: 150
Antigüedad: 16 años
Puntos: 1
Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlos

Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlos. El número resultante de la suma ha de ser capicúa.

ejemplo :

8
9 6 4
1 7 5 3 2
----------------------------
2 7 9 7 2
El resultado si es capicua ....

Alguien me podria dar la idea de como hacerla .. de antemano muchas gracia!
  #2 (permalink)  
Antiguo 01/12/2010, 18:11
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 14 años
Puntos: 4
Respuesta: Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlo

Que es lo que has hecho hasta el momento?
  #3 (permalink)  
Antiguo 02/12/2010, 07:09
 
Fecha de Ingreso: noviembre-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Respuesta: Ingresar los números naturales del 1 al 9 formando un triángulo y sumarlo

Espero que te sirva

Código:
private void TrianguloCapicua()
        {
            //Numero de Filas que va a tener el Triangulo
            //Definida por el usuario
            int FilasTriangulo = 4;
            int Columnas = (FilasTriangulo * 2) - 1;
            //La longitud de Cada Fila ( 1, 3, 5, 7, ...)
            int NumeroDigitos = 1;


            //Creamos la Matriz del triangulo;
            // [n+1] = ------------- 
            // [n+2] = El resultado de la suma
            String[] Triangulo = new String[FilasTriangulo + 2];

           
            Random r = new Random();
            String Espacios;
            // Rellenar las n - 1 filas
            for (int i = 0; i < FilasTriangulo - 1; i++)
            {   
                Espacios = String.Empty;

                //Espacios = NumeroFilas - NumeroFila
                for (int nEspacios = 0; nEspacios < FilasTriangulo - i - 1; nEspacios++)
                    Espacios = Espacios + " ";

                Triangulo[i] = Triangulo[i] + Espacios;
                
                //Numeros = NumeroDigitos;
                for (int j = 0; j < NumeroDigitos; j++)
                    Triangulo[i] = Triangulo[i] + r.Next(0, 9).ToString();

                Triangulo[i] = Triangulo[i] + Espacios;                
               
                NumeroDigitos += 2;
            }

            //Calculo de la Fila n
            // Las j columnas hasta la mitad se rellenan sin preocuparnos del numero
            Char[] Filan = new Char[Columnas];
            Char[] Filan1 = new Char[Columnas];

            for (int j = (FilasTriangulo * 2) - 1; j > ((FilasTriangulo * 2) - 1) / 2; j--)
                Filan[j - 1] = r.Next(0, 9).ToString()[0];

            //Las otras j columnas.
            for (int j = 0; j < Columnas / 2; j++)
                Filan[j] = ' ';

            //Pasar de char[] a String
            for (int j = 0; j < Columnas; j++)
                Triangulo[FilasTriangulo - 1] = Triangulo[FilasTriangulo -1]+Filan[j].ToString();


            int Suma;
            int Acarreo;
            char C;
            int Capicua;
            for (int j = Columnas - 1; j >= 0; j--)
            {
                Suma = 0;
                Acarreo=0;

                //Obtengo el Acarreo
                if (j + 1 < Columnas) 
                {
                    for (int i = 0; i < FilasTriangulo; i++)
                    {
                        if (Triangulo[i][j+1] != ' ')
                            Suma = Suma + Int32.Parse(Triangulo[i][j+1].ToString());
                        if (j < (Columnas / 2) - 1 && i + 1 == FilasTriangulo)
                            Suma = Suma + Int32.Parse(Filan1[j + 2].ToString());
                    }

                    //Si la suma es mayor 9 hay acarreo
                    if (Suma > 9)
                      Acarreo = Suma / 10;
                }

                Suma = Acarreo;
                //Sumo la columna
                for (int i = 0; i < FilasTriangulo; i++)
                {
                    if (Triangulo[i][j] != ' ')
                        Suma = Suma + Int32.Parse(Triangulo[i][j].ToString());
                }



               
                if (j >= (Columnas / 2))
                { 
                    //Las primeras j columnas no hay que calcularlas
                    Filan1[j] = Suma.ToString()[Suma.ToString().Length - 1];      
                }
                else
                {
                    //Las j columnas siguientes hay que calcularlas

                     //Obtengo su capicua = Mitad * 2 - pos 
                    C = Filan1[(Columnas / 2) * 2 - j];
                    Capicua = Int32.Parse(C.ToString());
                    while (Capicua < Suma)
                        Capicua += 10;


                    Capicua = Capicua - Suma;

                    Filan[j] = Capicua.ToString()[0];
                    Filan1[j] = C;   
                }

                         
            }

            //Pasar de char[] a String
            Triangulo[FilasTriangulo - 1] = String.Empty;
            for (int j = 0; j < (FilasTriangulo * 2) - 1; j++)
            {
                Triangulo[FilasTriangulo + 1] = Triangulo[FilasTriangulo + 1] + Filan1[j].ToString();
                Triangulo[FilasTriangulo] = Triangulo[FilasTriangulo] + "-";
                Triangulo[FilasTriangulo - 1] = Triangulo[FilasTriangulo - 1] + Filan[j].ToString();
            }


            //Imprimimos el Triangulo
            for (int i = 0; i < FilasTriangulo + 2; i++)
                Console.WriteLine(Triangulo[i]);
        }
Código:
         6         
        272        
       80253       
      6162313      
     428113227     
    30531214035    
   6573062756020   
  183453305350512  
 48120568450413513 
6250700334058571246
-------------------
6757289533359827576

Última edición por Ferdinandum; 03/12/2010 a las 06:02

Etiquetas: 2005, basic, capicuas, resultados, sumar, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:15.