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

Almacenar unos valores

Estas en el tema de Almacenar unos valores en el foro de C/C++ en Foros del Web. Hola. Tengo que almacenar unos valores concretos en una matriz, pero no sé cómo plantearlo... Es este: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original /* 19. ...
  #1 (permalink)  
Antiguo 07/03/2012, 08:43
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 3 meses
Puntos: 0
Almacenar unos valores

Hola. Tengo que almacenar unos valores concretos en una matriz, pero no sé cómo plantearlo...

Es este:

Código C:
Ver original
  1. /* 19. Escribir un programa que almacene en una matriz de NxN los valores:
  2. 1 2 3 4 5 6
  3. 2 1 2 3 4 5
  4. 3 2 1 2 3 4
  5. 4 3 2 1 2 3
  6. 5 4 3 2 1 2
  7. 6 5 4 3 2 1 */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. int main()
  13. {
  14.     int i, j, k, M[6][6];
  15.    
  16.    
  17.    
  18.     for(i=0; i<6;i++)
  19.     {
  20.        k = i+1;
  21.        for(j=0;j<6;j++)
  22.        {
  23.           M[i][j] = k;
  24.           printf("%d", M[i][j]);
  25.        }
  26.        printf("\n");
  27.     }
  28.    
  29.     system("pause");
  30.     return 0;
  31. }

Pensaba hacer que al principio del segundo for, k siempre fuera i+1, ya que cada fila de la matriz es i+1. Así, mientras fuera mayor que 0, disminuía en uno, y cuando fuera igual, aumentaba en 1 hasta llenar todas las columnas. Pero no creo que se pueda hacer así en C...

Muchas gracias.

Saludos.
  #2 (permalink)  
Antiguo 07/03/2012, 09:42
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Almacenar unos valores

Podrias explicar de que formas tienes que llenar la matriz?? De la forma que lo hiciste esta correcto...pero seguro qeu no obtienes el resultado deseado. Cual es ese resultado? Asi te podemos ayudar.
  #3 (permalink)  
Antiguo 07/03/2012, 10:44
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Almacenar unos valores

La puedo rellenar como quiera, pero supongo que la forma más eficiente es con un for.

Sí, lo que pasa es que no da el resultado correcto. Por ejemplo, ayer hice otros dos, pero con otros valores:

Código C:
Ver original
  1. /*
  2. 17. Escribir un programa que almacene en una matriz de NxN los valores:
  3. 1 1 1 1 1 1
  4. 2 2 2 2 2 2
  5. 3 3 3 3 3 3
  6. 4 4 4 4 4 4
  7. 5 5 5 5 5 5
  8. 6 6 6 6 6 6
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13.  
  14. int main()
  15. {
  16.     int i, j, M[6][6];
  17.    
  18.     for(i=0;i<6;i++)
  19.     {
  20.        for(j=0;j<6;j++)
  21.        {
  22.           M[i][j] = i+1;
  23.           printf("%d", M[i][j]);
  24.        }
  25.        printf("\n");
  26.     }
  27.    
  28.     system("pause");
  29.     return 0;
  30. }

Código C:
Ver original
  1. /* 18. Escribir un programa que almacene en una matriz de NxN los valores:
  2. 0 1 2 3 4 5
  3. 1 2 3 4 5 6
  4. 2 3 4 5 6 7
  5. 3 4 5 6 7 8
  6. 4 5 6 7 8 9
  7. 5 6 7 8 9 10 */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. int main()
  13. {
  14.     int i, j, k, M[6][6];
  15.    
  16.     k = 0;
  17.     for(i=0;i<6;i++)
  18.     {
  19.        for(j=0;j<6;j++)
  20.        {
  21.           M[i][j] = k;
  22.           printf("%d", M[i][j]);
  23.           k++;
  24.        }
  25.        printf("\n");
  26.        k = k - 5;
  27.     }
  28.    
  29.     system("pause");
  30.     return 0;
  31. }

Muchas gracias.

Saludos.
  #4 (permalink)  
Antiguo 07/03/2012, 14:59
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Almacenar unos valores

He pensado que es el (valor absoluto de i-j) + 1. (Estando en un bucle for, claro). Pero, ¿no hay otra forma más fácil de plantearlo? Me ha costado bastante...
  #5 (permalink)  
Antiguo 08/03/2012, 07:30
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: Almacenar unos valores

es cuestion de encontrar la relacion que tienen los numeros consecutivos de la matriz unos con otros, si es que existe dicha relacion...... en tu primer ejemplo la relacion es que en la diagonal principal solamente hay 1 y tanto a la derecha, arriba, izquierda y abajo de estos unos se va incrementando en 1 el numero que sigue... asi que un posible codigo para el primer ejemplo seria:

Código C:
Ver original
  1. /* 19. Escribir un programa que almacene en una matriz de NxN los valores:
  2. 1 2 3 4 5 6
  3. 2 1 2 3 4 5
  4. 3 2 1 2 3 4
  5. 4 3 2 1 2 3
  6. 5 4 3 2 1 2
  7. 6 5 4 3 2 1 */
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <iostream>
  11. using namespace std;
  12.  
  13. int main() 
  14. {
  15.     int i, j, M[6][6];
  16.     const int tamanio= 6;
  17.  
  18.     for(i=tamanio-1; i>=0;i--)
  19.        
  20.     {   M[i][i]=1;
  21.         for(j=i-1;j>=0;j--)
  22.         {
  23.             M[i][j] = M[i][j+1]+1;
  24.             M[j][i]= M[j+1][i]+1;
  25.         }
  26.    
  27.     }
  28.    
  29.     //se imprime la matriz en pantalla
  30.     for (int i=0;i<tamanio;i++){
  31.         for (int j=0; j<tamanio; j++)
  32.         cout<< M[i][j]<<" ";
  33.        
  34.        
  35.         cout<<endl;
  36.     }
  37.     system("pause");
  38.     return 0;
  39. }

para mostrar la matriz usé el cout porque no se usar el printf , pero es solamente para mostrar la matriz.

este ejemplo te va a servir para cualquier matriz cuadrada, solamente basta con modificar la constante tamanio con el valor del tamaño de la matriz.

para adaptarlo a C tendrias que borrar el include <iostream> y cambiar las lineas de los cout por los printf correspondientes.

saludos
  #6 (permalink)  
Antiguo 08/03/2012, 08:15
 
Fecha de Ingreso: enero-2012
Mensajes: 68
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Almacenar unos valores

¡Muchísimas gracias!

Etiquetas: almacenar, int, programa
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 09:35.