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

copiar arrays de dos dimensiones

Estas en el tema de copiar arrays de dos dimensiones en el foro de C/C++ en Foros del Web. Hola muy buenas. Tengo una duda sobre los arrays multidimensionales, yo quiero copiar un array de dos dimensiones a otro. He hecho este codigo, pero ...
  #1 (permalink)  
Antiguo 12/01/2013, 17:40
 
Fecha de Ingreso: mayo-2012
Mensajes: 19
Antigüedad: 12 años, 6 meses
Puntos: 1
copiar arrays de dos dimensiones

Hola muy buenas.

Tengo una duda sobre los arrays multidimensionales, yo quiero copiar un array de dos dimensiones a otro. He hecho este codigo, pero no me funciona, podeis decirme donde he fallado?

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int TAM=512;
  6.  
  7. typedef float Timagen[TAM][TAM];
  8. typedef float Tcopia[TAM][TAM];
  9.  
  10. void DetectarCelula (const Timagen &imagen, const Tcopia &copia);
  11. void Copiar (const Tcopia copia, Timagen &imagen, int alto, int ancho);
  12. void Marcar (const Timagen &imagen, const Tcopia &copia, int alto, int ancho);
  13.  
  14. int main () {
  15.  
  16.     int ancho, alto;
  17.    
  18.     Timagen imagen;
  19.  
  20.     cout << "Dime el ancho de la imagen: ";
  21.     cin >> ancho;
  22.  
  23.     if (ancho>TAM) {
  24.        
  25.         cout << "El ancho no puede ser mayor a 512. Vuelva a introducir el ancho: ";
  26.         cin >> ancho;
  27.     }
  28.    
  29.     cout << "Dime el alto de la imagen: ";
  30.     cin >> alto;
  31.  
  32.     if (alto>TAM) {
  33.    
  34.         cout << "El alto de la imagen no puede ser mayor de 512. Vuelva a introducir el alto: ";
  35.         cin >> alto;
  36.     }
  37.  
  38.     for (int j=0; j<alto; j++) {
  39.    
  40.         for (int i=0; i<ancho; i++) {
  41.            
  42.             cout << "Introduce el valor del pixel en la posicion (" << j << "," << i << "): " << endl;
  43.             cin >> imagen[j][i];
  44.            
  45.             if (imagen[j][i] > 255) {
  46.            
  47.                 cout << "Introduce el valor del pixel en la posicion (" << j << "," << i << ") dentro del rango: " << endl;
  48.                 cin >> imagen[j][i];
  49.             }
  50.            
  51.         }
  52.     }
  53.    
  54.     return 0;
  55. }
  56.  
  57. void Copiar (const Tcopia copia, Timagen &imagen, int alto, int ancho) {
  58.  
  59.     for (int a=0; a<alto; a++) {
  60.  
  61.         for (int b=0; b<ancho; b++) {
  62.  
  63.             imagen[a][b] = copia[a][b];
  64.         }
  65.     }
  66. }

Espero vuestras respuestas. Gracias.
  #2 (permalink)  
Antiguo 12/01/2013, 21:21
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 9 meses
Puntos: 35
Respuesta: copiar arrays de dos dimensiones

Creo que no hay necesidad de usar el operador & ya que, al menos en C, un vector es un puntero a la dirección de memoria del primer elemento.
Yo lo haría de la siguiente manera. Supongo que no tendrás problemas para compilarlo en C++.

Código C:
Ver original
  1. /* copy a into b */
  2. void copy(int from[5][5], int to[5][5])
  3. {
  4.     int i, j;
  5.    
  6.     for (i = 0; i < 5; i++)
  7.     {
  8.         for (j = 0; j < 5; j++)
  9.         {
  10.             to[i][j] = from[i][j];
  11.         }
  12.     }
  13. }

Luego imprimes ambos para comprobar que son iguales (o simplemente comparas sus elementos):

Código C:
Ver original
  1. int i, j;
  2.     int a[5][5] = {
  3.         1, 2, 3, 4, 5,
  4.         10, 20, 30, 40, 50,
  5.         11, 12, 13, 14, 15,
  6.         9, 8, 7, 6, 4,
  7.         7, 6, 5, 4, 3
  8.     };
  9.     int b[5][5];
  10.    
  11.     copy(a, b);
  12.    
  13.     for (i = 0; i < 5; i++)
  14.     {
  15.         for (j = 0; j < 5; j++)
  16.         {
  17.             /* Comprobar que son iguales */
  18.             printf(
  19.                 "a[%d][%d] = %d\nb[%d][%d] = %d\n", i, j, a[i][j], i, j, b[i][j]
  20.                 );
  21.         }
  22.     }

Espero que te sea de utilidad!


Última edición por carbon; 12/01/2013 a las 22:24

Etiquetas: arrays, dimensiones, funcion, int
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 14:50.