Autor Tema: crear una matriz con números al azar en C (lenguajec)  (Leído 33522 veces)

Hyde

  • Sin experiencia
  • *
  • Mensajes: 16
    • Ver Perfil
crear una matriz con números al azar en C (lenguajec)
« en: 07 de Febrero 2014, 23:41 »
Me están pidiendo que de un matriz 10 x 10 , donde los números sean al azar, Mostrar solo los valores de la matriz, donde la suma de su fila y columna sea par.

La matriz:

Código: [Seleccionar]
//matriz cargada con numeros aleatorios entre 10 y 99
  srand(time(0));
  acum=0;
  for(x=0;x<10;x++){
    for(y=0;y<10;y++){
      M[x][y]=rand()%90+10;   
      acum=acum+ M[x][y];

    }   
  }//for x
 
  //imprimir matriz
 
  printf("\t\tMatriz Original\n\n");
  for(x=0;x<10;x++){
    printf("\n");
    for(y=0;y<10;y++){
      printf(" %d ",M[x][y]);
    }   
  }//for x
//---------------------------------------------------------------------
//--- Matriz traspuesta -----
  for(x=0;x<10;x++){
    for(y=0;y<10;y++){
      M2[x][y]=M[y][x];   
    }   
  }//for x
  printf("\n\n\t\tMatriz Traspuesta\n\n");
  for(x=0;x<10;x++){
    printf("\n");
    for(y=0;y<10;y++){
      printf(" %d ",M2[x][y] );
    }   
  }//for x

//----------------------------------------------------
puedo sacar la suma de cada fila y la de cada columna de esta manera:
Código: [Seleccionar]
for(x=0;x<10;x++){
sumafilas=0;
     for(y=0;y<10;y++){
  sumafilas=sumafilas+M[x][y];
  vecF[x]=sumafilas;
    }//for x
  }//for y
printf("\n\nLa suma de cada fila es:\n\n");
 for(x=0;x<10;x++){
printf("\n %d", vecF[x]);
}
  for(x=0;x<10;x++){
sumacolum=0;
     for(y=0;y<10;y++){
  sumacolum=sumacolum+M[y][x];
  vecC[x]=sumacolum;
    }//for x
  }//for y
printf("\n\nLa suma de cada columna es:\n\n");
 for(x=0;x<10;x++){
printf("\n %d", vecC[x]);
}

pero como hago para Mostrar solo los valores de la matriz, donde la suma de su fila y columna sea par, no mostrar la suma, sino la fila y las columnas donde la suma sea par. Un saludo!
« Última modificación: 14 de Diciembre 2016, 20:56 por Ogramar »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Matriz 10x10 duda
« Respuesta #1 en: 08 de Febrero 2014, 18:26 »
Hola Hyde, pienso que esto pueda valer:

Código: [Seleccionar]
  for(x=0;x<10;x++){
    for(y=0;y<10;y++){

if((x+y)%2 ==0){

printf("El elemento con fila %d y columna %d tiene valor %d ",x, y, M[x][y] );

}

    }   
  }

En C y C++ el operador % devuelve el resto de una división. Si un número es par al dividirlo por 2 su resto es cero. Así 2%2 vale 0 pero 3%2 vale 1, 4%2 vale cero, etc. así se puede determinar cuándo un valor es par.

Ejemplo (sólo pongo una matriz de 3x3 para no agrandar demasiado):

( 2   4   3
  2   5   8   
  9   7   5)

En la fila 1 y columna 1 tenemos un 2, como 1+1 es par, se mostrará "El elemento con fila 1 y columna 1 tiene valor 2"

En la fila 1 y columna 2 tenemos un 4, pero no se mostrará porque 1+2 es impar

En la fila 1 y columna 3 tenemos un 3, como 1+3 es par, se mostrará "El elemento con fila 1 y columna 3 tiene valor 3"

Y así sucesivamente...

Responsable de departamento de producción aprenderaprogramar.com

Hyde

  • Sin experiencia
  • *
  • Mensajes: 16
    • Ver Perfil
Re:Matriz 10x10 duda
« Respuesta #2 en: 08 de Febrero 2014, 19:04 »
Hola César, gracias por responder , pero eso no es precisamente lo que me piden.

En el segundo código que inserte, esta el vector que me suma cada fila y cada columna, entonces si la suma de esa fila da Par, mostrar los valores por ejemplo:

La suma de los valores d la fila 1, dio par, entonces mostrar los valores:
por ejemplo esta matriz 4x4:

2  4  8  6
6  3  7  3
5  6  8  7
2  1  4  8
--------------------------------
la suma de cada fila es:

2+4+8+6=20
6+3+7+3=19
5+6+8+7=26
2+1+4+8=15
--------------------------------
entonces las que la suma dio par, que me imprima solo esas filas de esta manera:

"Las filas donde su suma de sus valores es par son:"

2  4  8  6
5  6  8  7

Espero a verme explicado!

EDITO:: la respuesta que me diste es la correcta, solo lo vi por otro punto de vista!! Gracias!, de todas maneras según como me lo imagine yo, seria buena practica también.
« Última modificación: 08 de Febrero 2014, 21:01 por Hyde »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".