Colgado jaja

Iniciado por diegox474, 12 Mayo 2020, 18:48 PM

0 Miembros y 1 Visitante están viendo este tema.

diegox474

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");
}

diegox474

Cita de: 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");
}

K-YreX

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:

for(int i = 0; i < orden; ++i){
  matriz[i][i] = 1;
}


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:

#DEFINE SIZE 100 // Usa constantes para los numeros que aparezcan sueltos. Asi puedes cambiarlos todos de una vez
//...
int main(){
  //...
  int diagonal[SIZE];
  //...
  for(int i = 0; i < orden; ++i){
    diagonal[i] = matriz[i][i];
    matriz[i][i] = 1;
  }
  //...
}


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.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;