Título: Colgado jaja Publicado por: diegox474 en 12 Mayo 2020, 18:48 pm necesito hacer un algoritmo que pueda leer una matriz sacar todos los componentes de la diagonal cambiarlos por 1 y guardarlos en otro vector.
hasta ahora lo que tengo es que imprime los valores de la diagonal, el problema es que no se como cambiar los valores por 1 y guardarlos en el otro arreglo #include <stdio.h> #include <stdlib.h> void diagonal(int matriz[100][100]);// se declara 100 para darle el tamaño suficiente al usuario de poner la amtriz por las dimensiones que necesite int main() { int filas, columnas ,i,j; int matriz[100][100]={0}; printf("INGRESE EL NUMERO DE FILAS PARA SU MATRIZ CUADRADA:"); scanf("%d",&filas); printf("INGRESE EL NUMERO DE COLUMNAS PARA SU MATRIZ CUADRADA:"); scanf("%d",&columnas); for(i=0;i<filas;i++) { for(j=0;j<columnas;j++) // se llena la matriz { printf("INGRESE VALORES DE LA MATRIZ[%d , %d]: ",i,j); scanf("%d",&matriz[j]); } } for(i=0;i<filas;i++) { for(j=0;j<columnas;j++) { printf("%d",matriz[j]); // se imprim la matriz } printf("\n"); } diagonal(matriz); // invoco la funcion return 0; } void diagonal(int matriz[100][100]) // esta es la funcion en donde encuentro la diagonal { int i,filas,columnas; printf("EL VALOR DE LA DIAGONAL ES\n"); for(i=0;i<columnas;i++) // se pueden colocar filas o columnas ya que se tomara la misma .. mirar abajo en el printf. { printf("%d ",matriz); } printf("\n"); } Título: Re: Colgado jaja, necesito completar este codigo Publicado por: diegox474 en 12 Mayo 2020, 18:49 pm necesito hacer un algoritmo que pueda leer una matriz sacar todos los componentes de la diagonal cambiarlos por 1 y guardarlos en otro vector. hasta ahora lo que tengo es que imprime los valores de la diagonal, el problema es que no se como cambiar los valores por 1 y guardarlos en el otro arreglo #include <stdio.h> #include <stdlib.h> void diagonal(int matriz[100][100]);// se declara 100 para darle el tamaño suficiente al usuario de poner la amtriz por las dimensiones que necesite int main() { int filas, columnas ,i,j; int matriz[100][100]={0}; printf("INGRESE EL NUMERO DE FILAS PARA SU MATRIZ CUADRADA:"); scanf("%d",&filas); printf("INGRESE EL NUMERO DE COLUMNAS PARA SU MATRIZ CUADRADA:"); scanf("%d",&columnas); for(i=0;i<filas;i++) { for(j=0;j<columnas;j++) // se llena la matriz { printf("INGRESE VALORES DE LA MATRIZ[%d , %d]: ",i,j); scanf("%d",&matriz[j]); } } for(i=0;i<filas;i++) { for(j=0;j<columnas;j++) { printf("%d",matriz[j]); // se imprim la matriz } printf("\n"); } diagonal(matriz); // invoco la funcion return 0; } void diagonal(int matriz[100][100]) // esta es la funcion en donde encuentro la diagonal { int i,filas,columnas; printf("EL VALOR DE LA DIAGONAL ES\n"); for(i=0;i<columnas;i++) // se pueden colocar filas o columnas ya que se tomara la misma .. mirar abajo en el printf. { printf("%d ",matriz); } printf("\n"); } Título: Re: Colgado jaja Publicado por: K-YreX en 12 Mayo 2020, 19:23 pm Para colocar códigos utiiza las etiquetas de Código GeSHi (desplegable encima del cuadro de texto)
Tu propósito es trabajar con matrices cuadradas por lo que parece. Entonces no tiene sentido que pidas filas y columnas ya que podrían ponerte números diferentes y hacer que el programa falle. Es mejor que pidas un único valor que sea el orden de la matriz, es decir, el número de filas y columnas. Si quieres recorrer la diagonal de una matriz cuadrada verás que las casillas que quieres recorrer son: (0,0), (1,1), (2,2),...; es decir, la i y la j avanzan a la vez o lo que es lo mismo solo utilizas una variable en el bucle: Código
Si quieres guardar los valores en otro array, tendrás que crearlo. Y si quieres guardar los valores originales poner la instrucción antes de modificar los valores por 1s y si lo que quieres guardar son los 1s (que no tiene mucho sentido) pues después: Código
Luego recuerda usar <orden> para recorrer tanto la matriz como el array ya que son las posiciones que has ocupado realmente. El resto de posiciones desde orden hasta SIZE serán basura. |