Título: Crear matriz partiendo de un vector ingresado Publicado por: Faceless en 5 Octubre 2016, 05:14 am Buenas, necesito ayuda con la siguiente parte que se pide para el programa, por que en verdad no se me ocurre como hacerlo:
Citar el programa llama a la función "calcular_matriz" la cual debe calcular una matriz cuadrada cuyo numero de filas y de columnas es igual a la longitud del vector. En la fila 'k' y columna 'n' de debe almacenar la suma de todos los números del vector que se encuentran entre las posiciones 'k' y 'n' incluyendo a estas últimas. Por ejemplo, si el vector es [1 2 3 4 5] con k=1 y n=3, entonces en la fila 1 y conlumna 3 de la matriz se debe poner el numero vector[1]+vector[2]+vector[3] = 2+3+4 = 9 y lo mismo vale si k=3 y n=1. Es decir que la matriz resultante es simétrica. El programa consiste en que se almacena un vector de máximo 10 digitos enteros. Se pueden almacenar menos numeros introduciendo un entero negativo al final del vector, el cual no va a ser almacenado. El vector es impreso en pantalla Luego la función que calcula la matriz debe crear una matriz de numero de filas y columnas iguales a la longitud del vector hecha a partir del vector de la manera en que mencioné arriba, y por último debe ser impresa, quedando por ejemplo: Citar Ingrese los numeros del vector: 7 6 5 4 3 2 1 -1 El vector es: 7 6 5 4 3 2 1 La matriz es: 7 13 18 22 25 27 28 13 6 11 15 18 20 21 18 11 5 9 12 14 15 22 15 9 4 7 9 10 25 18 12 7 3 5 6 27 20 14 9 5 2 3 28 21 15 10 6 3 1 Aquí dejo lo que tengo hecho del programa, solo me falta la función calcular_matriz e imprimir_matriz, tengan en cuenta que soy nuevo en esto de la programación, aunque no se me exige mucho con este programa : Código: #include<iostream> Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: dato000 en 5 Octubre 2016, 18:42 pm Pues si que es un problema interesante, y me esta dando un verdadero dolor de cabeza hacerlo, lo que no entiendo es si eres nuevo en programación porque te complicas tanto con funciones, hazlo todo de una vez en el main, no es un código muy largo, o al menos, hasta que tengas el algoritmo resuelvas la matriz.
algo así es suficiente, sigo echandole cabeza al algoritmo porque simplemente es mucho más complicado de lo que parece, alguien más se suma?? Código
Slds Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: MAFUS en 5 Octubre 2016, 20:46 pm Te lo voy a dar en seudocódigo.
Un bucle que recorra las filas, índice i. Un bucle que recorra las columnas de una forma especial, índice j. Una variable llamada size guarda el tamaño del vector Código: Bucle i desde 0 hasta size - 1: Código: Bucle i desde 0 hasta size - 1: Al terminar la tabla estará rellenada. Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: dato000 en 5 Octubre 2016, 20:56 pm personalmente no entiendo eso de Bucle j desde i - 1 hasta 0, pero finalmente di con el problema, era que tenia que inicializar el valor de columna con el de la fila para realizar la sumatoria en cada fila y luego añadirla como un espejo en las columnas.
Dejo el código editado arriba Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: MAFUS en 5 Octubre 2016, 21:08 pm bucle j desde i - 1 hasta 0:
Código: for( j = i-1; j >= 0; --j) Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: dato000 en 5 Octubre 2016, 21:21 pm ah capto, entonces empiezas desde el final, eso seria más complicado no???
Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: MAFUS en 5 Octubre 2016, 21:47 pm La idea es:
i se mueve desde la primera fila hasta la última. Como se trata de una tabla cuadrada Código: tabla[i][i] Ahora si se hace uso de j partiendo desde i - 1 hasta 0 y a cada paso se va sumando su posición anterior, se tiene que se rellena la tabla desde la diagonal hacia la izquierda de la forma deseada. Lo mismo se hace después desde i + 1 hasta size - 1, que en código sería: Código: for(j = i + 1; j < size; ++j) Título: Re: Crear matriz partiendo de un vector ingresado Publicado por: Faceless en 5 Octubre 2016, 23:41 pm Muchas gracias a ambos por su ayuda! :)
|