Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Hyde en 07 de Febrero 2014, 23:41

Título: crear una matriz con números al azar en C (lenguajec)
Publicado por: Hyde 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!
Título: Re:Matriz 10x10 duda
Publicado por: César Krall 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...

Título: Re:Matriz 10x10 duda
Publicado por: Hyde 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.