Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fst091 en 02 de Octubre 2016, 20:02

Título: Hola compañeros, alguien podría ayudarme por favor
Publicado por: fst091 en 02 de Octubre 2016, 20:02
Tengo que convertir una matriz de cadenas a la suma de sus letras en codigo ascii, por ejemplo tengo la palabra soleado, la suma de sus caracteres me daria 743, hasta este punto según yo ya lo tengo, pero despues de eso tengo que volver a sumar, pero esta ve serian los dígitos, entonces me quedaría 14, y nuevamente tengo que hacer el proceso y  me quedaría 5, alguien podría ayudarme a solucionar el problema.
Intente copiar y pegar parte del código una y ta vez, pero se que eso no se ve bien,les dejo mi código, espero alguien pueda ayudarme, de antemano gracias

Código: [Seleccionar]
package Parte_Final;

public class TBD__String {
   
     public static void main(String[] args) {

        String[][] BD = new String[14][5];
        int [][] BDSuma =new int[14][5];
        int [][] BDSuma2 =new int[14][5];
       
        BD [0][0] = "soleado"; BD[0][1] = "calor"; BD[0][2] = "alta"; BD[0][3] = "debil"; BD[0][4] ="no";
        BD [1][0] = "soleado"; BD[1][1] = "calor"; BD[1][2] = "alta"; BD[1][3] = "fuerte"; BD[1][4] ="no";
        BD [2][0] = "nublado"; BD[2][1] = "calor"; BD[2][2] = "alta"; BD[2][3] = "debil"; BD[2][4] ="si";
        BD [3][0] = "lluvia"; BD[3][1] = "templado"; BD[3][2] = "alta"; BD[3][3] = "debil"; BD[3][4] ="si";
        BD [4][0] = "lluvia"; BD[4][1] = "frio"; BD[4][2] = "normal"; BD[4][3] = "debil"; BD[4][4] ="si";
        BD [5][0] = "lluvia"; BD[5][1] = "frio"; BD[5][2] = "normal"; BD[5][3] = "fuerte"; BD[5][4] ="no";
        BD [6][0] = "nublado"; BD[6][1] = "frio"; BD[6][2] = "normal"; BD[6][3] = "fuerte"; BD[6][4] ="si";
        BD [7][0] = "soleado"; BD[7][1] = "templado"; BD[7][2] = "alta"; BD[7][3] = "debil"; BD[7][4] ="no";
        BD [8][0] = "soleado"; BD[8][1] = "frio"; BD[8][2] = "normal"; BD[8][3] = "debil"; BD[8][4] ="si";
        BD [9][0] = "lluvia"; BD[9][1] = "templado"; BD[9][2] = "normal"; BD[9][3] = "debil"; BD[9][4] ="si";
        BD [10][0] = "soleado"; BD[10][1] = "templado"; BD[10][2] = "normal"; BD[10][3] = "fuerte"; BD[10][4] ="si";
        BD [11][0] = "nublado"; BD[11][1] = "templado"; BD[11][2] = "alta"; BD[11][3] = "fuerte"; BD[11][4] ="si";
        BD [12][0] = "nublado"; BD[12][1] = "calor"; BD[12][2] = "normal"; BD[12][3] = "debil"; BD[12][4] ="si";
        BD [13][0] = "soleado"; BD[13][1] = "templado"; BD[13][2] = "alta"; BD[13][3] = "fuerte"; BD[13][4] ="no";
       
        int suma, n = 14, m = 5;
        System.out.printf("Matriz 1\n");
        for (int i = 0; i < n; i++) {
            System.out.printf("\n");
            for (int j = 0; j < m; j++) {

                System.out.printf("%s\t", BD[i][j]);

            }
        }

        System.out.printf("\n\n");

        System.out.printf("Matriz 2\n");

        for (int i = 0; i < n; i++) {

            System.out.printf("\n");

            for (int j = 0; j < m; j++) {

                int x = BD[i][j].length();

                suma = 0;

                for (int k = 0; k < x; k++) {

                    char aux1 = BD[i][j].charAt(k);

                    int aux2 = aux1;
                    suma = suma + aux2;

                }

                BDSuma[i][j] = suma;
                System.out.printf("%d\t", suma);

            }
        }
        System.out.printf("\n");

        System.out.printf("\nMatriz 3\n");

        for (int i = 0; i < n; i++) {
            System.out.printf("\n");
            for (int j = 0; j < m; j++) {

                int suma2 = 0;

                while (BDSuma[i][j] > 0) {

                    int x = BDSuma[i][j] % 10;

                    suma2 = suma2 + x;

                    BDSuma[i][j] = BDSuma[i][j] / 10;
                    //  System.out.printf("%d\t", BDSuma[i][j]);
                }
                 BDSuma2[i][j] = suma2;
                System.out.printf("%d\t", suma2);
            }
        }

           
       
        System.out.printf("\n");

        System.out.printf("\nMatriz 4\n");

        for (int i = 0; i < n; i++) {
            System.out.printf("\n");
            for (int j = 0; j < m; j++) {

                int suma3 = 0;

                while (BDSuma2[i][j] > 0) {

                    int x = BDSuma2[i][j] % 10;

                    suma3 = suma3 + x;

                    BDSuma2[i][j] = BDSuma2[i][j] / 10;
                    //  System.out.printf("%d\t", BDSuma[i][j]);
                }
                System.out.printf("%d\t", suma3);
            }
        }
    }
}⁠⁠⁠⁠

ASI LO IMPRIME Matriz 1

soleado   calor   alta   debil   no   
soleado   calor   alta   fuerte   no   
nublado   calor   alta   debil   si   
lluvia   templado   alta   debil   si   
lluvia   frio   normal   debil   si   
lluvia   frio   normal   fuerte   no   
nublado   frio   normal   fuerte   si   
soleado   templado   alta   debil   no   
soleado   frio   normal   debil   si   
lluvia   templado   normal   debil   si   
soleado   templado   normal   fuerte   si   
nublado   templado   alta   fuerte   si   
nublado   calor   normal   debil   si   
soleado   templado   alta   fuerte   no   

Matriz 2

743   529   418   512   221   
743   529   418   651   221   
741   529   418   512   220   
653   854   418   512   220   
653   432   649   512   220   
653   432   649   651   221   
741   432   649   651   220   
743   854   418   512   221   
743   432   649   512   220   
653   854   649   512   220   
743   854   649   651   220   
741   854   418   651   220   
741   529   649   512   220   
743   854   418   651   221   

Matriz 3

14   16   13   8   5   
14   16   13   12   5   
12   16   13   8   4   
14   17   13   8   4   
14   9   19   8   4   
14   9   19   12   5   
12   9   19   12   4   
14   17   13   8   5   
14   9   19   8   4   
14   17   19   8   4   
14   17   19   12   4   
12   17   13   12   4   
12   16   19   8   4   
14   17   13   12   5   

Matriz 4

5   7   4   8   5   
5   7   4   3   5   
3   7   4   8   4   
5   8   4   8   4   
5   9   10   8   4   
5   9   10   3   5   
3   9   10   3   4   
5   8   4   8   5   
5   9   10   8   4   
5   8   10   8   4   
5   8   10   3   4   
3   8   4   3   4   
3   7   10   8   4   
5   8   4   3   5   BUILD SUCCESSFUL (total time: 1 second)




Título: Re:Hola compañeros, alguien podría ayudarme por favor
Publicado por: pedro,, en 03 de Octubre 2016, 10:16
Hola fst091.

Lo primero recomendar que leas el siguiente enlace para ver como escribir en el foro adecuadamente y sobretodo introducir tu código de forma correcta, entre las etiquetas
[code ][ /code] mostradas con el simbolo "#" .
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.msg7784#msg7784

En cuanto al código  que muestras, veo que hace lo que explicas, podrías explicar cual es el problema que no consigues hacer solucionar??

Saludos. ;D
Título: Re:Hola compañeros, alguien podría ayudarme por favor
Publicado por: fst091 en 04 de Octubre 2016, 02:03
Gracias por las recomendaciones Pedro, mi problema es que debo optimizar  los pasos de la matriz 3, 4, 5, y eso lo debo de hacer con un ciclo, pero nose como hacerlo, gracias por tu ayuda
Título: Re:Hola compañeros, alguien podría ayudarme por favor
Publicado por: pedro,, en 04 de Octubre 2016, 10:57
Se me ocurre que en vez de mostrar las matrices que usas por pantalla, primeramente podrías introducirlas en un string como cadena de texto, además de usar el mismo bucle para crearlas y finalmente mostrarlas todas de una vez.

Te dejo un ejemplo:

Código: [Seleccionar]
public class PRUEBAS {

     public static void main(String[] args) {
        String[][] BD = new String[14][5];
        int [][] BDSuma =new int[14][5];
        int [][] BDSuma2 =new int[14][5];
        String [] matriz = new String[4];
       
        BD [0][0] = "soleado"; BD[0][1] = "calor"; BD[0][2] = "alta"; BD[0][3] = "debil"; BD[0][4] ="no";
        BD [1][0] = "soleado"; BD[1][1] = "calor"; BD[1][2] = "alta"; BD[1][3] = "fuerte"; BD[1][4] ="no";
        BD [2][0] = "nublado"; BD[2][1] = "calor"; BD[2][2] = "alta"; BD[2][3] = "debil"; BD[2][4] ="si";
        BD [3][0] = "lluvia"; BD[3][1] = "templado"; BD[3][2] = "alta"; BD[3][3] = "debil"; BD[3][4] ="si";
        BD [4][0] = "lluvia"; BD[4][1] = "frio"; BD[4][2] = "normal"; BD[4][3] = "debil"; BD[4][4] ="si";
        BD [5][0] = "lluvia"; BD[5][1] = "frio"; BD[5][2] = "normal"; BD[5][3] = "fuerte"; BD[5][4] ="no";
        BD [6][0] = "nublado"; BD[6][1] = "frio"; BD[6][2] = "normal"; BD[6][3] = "fuerte"; BD[6][4] ="si";
        BD [7][0] = "soleado"; BD[7][1] = "templado"; BD[7][2] = "alta"; BD[7][3] = "debil"; BD[7][4] ="no";
        BD [8][0] = "soleado"; BD[8][1] = "frio"; BD[8][2] = "normal"; BD[8][3] = "debil"; BD[8][4] ="si";
        BD [9][0] = "lluvia"; BD[9][1] = "templado"; BD[9][2] = "normal"; BD[9][3] = "debil"; BD[9][4] ="si";
        BD [10][0] = "soleado"; BD[10][1] = "templado"; BD[10][2] = "normal"; BD[10][3] = "fuerte"; BD[10][4] ="si";
        BD [11][0] = "nublado"; BD[11][1] = "templado"; BD[11][2] = "alta"; BD[11][3] = "fuerte"; BD[11][4] ="si";
        BD [12][0] = "nublado"; BD[12][1] = "calor"; BD[12][2] = "normal"; BD[12][3] = "debil"; BD[12][4] ="si";
        BD [13][0] = "soleado"; BD[13][1] = "templado"; BD[13][2] = "alta"; BD[13][3] = "fuerte"; BD[13][4] ="no";
       
        int suma, n = 14, m = 5;

        for(int i = 0; i<4; i++) {
            matriz[i] = "";
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                matriz[0] += "\t" + BD[i][j];
                int x = BD[i][j].length();
                suma = 0;
                for (int k = 0; k < x; k++) {
                    char aux1 = BD[i][j].charAt(k);
                    suma = suma + aux1;
                }
                BDSuma[i][j] = suma;
                matriz[1] += "\t" + suma;
                suma = 0;

                while (BDSuma[i][j] > 0) {
                    x = BDSuma[i][j] % 10;
                    suma = suma + x;
                    BDSuma[i][j] = BDSuma[i][j] / 10;
                }
                BDSuma2[i][j] = suma;
                matriz[2] += "\t" + suma;
                suma = 0;

                while (BDSuma2[i][j] > 0) {
                    x = BDSuma2[i][j] % 10;
                    suma = suma + x;
                    BDSuma2[i][j] = BDSuma2[i][j] / 10;
                }
                matriz[3] += "\t" + suma;
            }           
            for(int k = 0; k < 4; k++){
                matriz[k] += "\n";
            }
        }
        for(int i = 0; i < 4; i++){
            System.out.printf("Matriz " + (i+1) + "\n" + matriz[i]);
        }
    }
}

Espero haberte entendido bien y que te valga de ayuda.

Saludos.  ;D
Título: Re:Hola compañeros, alguien podría ayudarme por favor
Publicado por: Alex Rodríguez en 12 de Octubre 2016, 13:51
Hola fst091, es importante que el título de los temas sea descriptivo. No escribas títulos como "Hola compañeros, alguien podría ayudarme" ó "Ayuda urgente". Describe siempre el objetivo por ejemplo "Ejercicio con arreglos en Java recorrer matrices multidimensionales"

Mira el link con las normas que ha comentado Pedro, si no las sigues podrás ser bloqueado por un administrador.

Saludos