Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Imprimir solo dos caracteres de una matriz en c

Estas en el tema de Imprimir solo dos caracteres de una matriz en c en el foro de C/C++ en Foros del Web. Hola, estoy empezando con c y tengo que hacer un ejercicio en el cual tengo que hacer una matriz 2x3 y tengo que imprimir el ...
  #1 (permalink)  
Antiguo 10/02/2014, 13:04
Avatar de Totti7  
Fecha de Ingreso: mayo-2012
Ubicación: barcelona
Mensajes: 28
Antigüedad: 12 años, 7 meses
Puntos: 2
Imprimir solo dos caracteres de una matriz en c

Hola, estoy empezando con c y tengo que hacer un ejercicio en el cual tengo que hacer una matriz 2x3 y tengo que imprimir el valor minimo i el maximo, osea el 1 i el 6 de la manera:
(1, ,
, ,6)
mi codigo es el siguiente, lo que hace es imprimir todos los numeros de la matriz, pero eso no es lo que necesito. Gracias de antemano, es algo urgente.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5.     int m[2][3] = {1,2,3,4,5,6};
  6.     int i,j;
  7.    
  8.     for (i=0;i<2;i++) {
  9.         for (j=0;j<3;j++) {
  10.             printf(" %d, ",m[i][j]);
  11.     }
  12.     printf("\n");
  13.     }
  14. }
  #2 (permalink)  
Antiguo 10/02/2014, 13:17
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Imprimir solo dos caracteres de una matriz en c

Haz lo que harias con papel y lapiz: defines un numero minimo y lo inicias al valor maximo que puedas imaginar; luego comparas cada valor de la matriz con ese minimo: si el valor de la matriz es menor que el minimo lo asignas y continuas; lo mismo con el valor maximo pero iniciandolo con el valor minimo que imagines.

El codigo seria asi:

Código C:
Ver original
  1. int min = INT_MAX;
  2. int max = INT_MIN;
  3.  
  4. for (i=0; i<2; i++) {
  5.     for (j=0; j<3; j++) {
  6.         if(m[i][j] < min) {
  7.             min = m[i][j];
  8.         }
  9.         if(m[i][j] > max) {
  10.             max = m[i][j];
  11.         }
  12.     }
  13. }

Los INT_MIN e INT_MAX estan en limits.h, y son los valores minimo y maximo que puede guardar una variable de tipo entero (solo sirve para tipos enteros, ni para long ni para floats)

Saludos
vosk
  #3 (permalink)  
Antiguo 10/02/2014, 13:47
Avatar de Totti7  
Fecha de Ingreso: mayo-2012
Ubicación: barcelona
Mensajes: 28
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Imprimir solo dos caracteres de una matriz en c

Muchas gracias por tu tan rapida respuesta, entonces entendiendo i completando el codigo seria algo asi no?

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <limits.h>
  3. main()
  4. {
  5.     int m[2][3] = {1,2,3,4,5,6};
  6.     int i, j, min = INT_MAX, max = INT_MIN;
  7.     for (i=0;i<2;i++) {
  8.         for (j=0;j<3;j++)
  9.         {  
  10.             if(m[i][j] < min) {
  11.             min = m[i][j];
  12.             }
  13.             if(m[i][j] > max) {
  14.             max = m[i][j];
  15.             }
  16.             printf(" %d, ",m[max][min]);
  17.         }
  18.     printf("\n");
  19.     }
  20. }
La cuestion es que no funciona del todo bien, en que me e equivocado?
  #4 (permalink)  
Antiguo 10/02/2014, 14:04
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Imprimir solo dos caracteres de una matriz en c

No, max y min son los valores reales maximo y minimo encontrados, no las coordenadas de dichos valores dentro de la matriz:

Código C:
Ver original
  1. int m[2][3] = {1,2,3,4,5,6};
  2. int i, j, min = INT_MAX, max = INT_MIN;
  3. for (i=0;i<2;i++) {
  4.     for (j=0;j<3;j++)
  5.     {  
  6.         if(m[i][j] < min) {
  7.             min = m[i][j];
  8.             printf("Sobreescribo min %d\n", min);
  9.         }
  10.         if(m[i][j] > max) {
  11.             max = m[i][j];
  12.             printf("Sobreescribo max %d\n", max);
  13.         }
  14.     }
  15.     printf("\n");
  16. }
  17. printf("Al final el minimo valor dentro de la matriz es %d, y el maximo es %d", min, max);

Si quieres guardar las coordenadas de la posicion del minimo y del maximo tienes que declarar las variables para guardar las dos coordenadas de cada posicion (2 para max y dos para min). Algo asi:

Código C:
Ver original
  1. typedef struct {
  2.     int x, y;
  3. } COORD;
  4.  
  5. int main() {
  6.     int m[2][3] = {1,2,3,4,5,6};
  7.     int i, j, min = INT_MAX, max = INT_MIN;
  8.     COORD coord_min, coord_max;
  9.  
  10.     for (i=0; i<2; i++) {
  11.         for (j=0; j<3; j++) {
  12.             printf(" %d, ",m[i][j]);
  13.             if(m[i][j] < min) {
  14.                 min = m[i][j];
  15.                 coord_min.y = i;
  16.                 coord_min.x = j;
  17.             }
  18.             if(m[i][j] > max) {
  19.                 max = m[i][j];
  20.                 coord_max.y = i;
  21.                 coord_max.x = j;
  22.             }
  23.         }
  24.         printf("\n");
  25.     }
  26.  
  27.     printf("MIN en [%d][%d] = %d = %d\n", coord_min.x, coord_min.y, m[coord_min.y][coord_min.x], min);
  28.     printf("MAX en [%d][%d] = %d = %d\n", coord_max.x, coord_max.y, m[coord_max.y][coord_max.x], max);
  29.  
  30.     return 0;
  31. }

Saludos
vosk
  #5 (permalink)  
Antiguo 10/02/2014, 14:23
Avatar de Totti7  
Fecha de Ingreso: mayo-2012
Ubicación: barcelona
Mensajes: 28
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Imprimir solo dos caracteres de una matriz en c

Perfecto! Muchas gracias Vosk!

Etiquetas: c++, lenguajec, matriz, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:18.