Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2013, 06:49
Lotux5
 
Fecha de Ingreso: enero-2013
Mensajes: 25
Antigüedad: 11 ańos, 3 meses
Puntos: 0
Error con rand() y memcpy()

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cstdlib>
  4. #include "Matriz2D-1.h"
  5.  
  6.  
  7. using namespace std;
  8.  
  9.  
  10. Matriz2D_1 CreaMatriz2D_1 (int fils, int cols)
  11. {
  12.  
  13.     Matriz2D_1 matriz = new int *[fils];   
  14.  
  15.     for (int f=0;f<fils;f++)
  16.         matriz[f] = new int [cols];
  17.  
  18.     return(matriz);
  19. }
  20.  
  21. Matriz2D_1 AleatorizaMatriz2D_1 (int fils, int cols, int MAX)
  22. {  
  23.     Matriz2D_1 aleatoria = CreaMatriz2D_1 (fils, cols);
  24.     for (int f=0; f<fils; f++)
  25.         for (int c=0; c<cols; c++)
  26.             aleatoria[f][c] = rand(MAX);
  27.        
  28.     return (aleatoria);
  29. }
  30.  
  31. Matriz2D_1 LeeMatriz2D_1 (int fils, int cols)
  32. {
  33.     Matriz2D_1 matriz = CreaMatriz2D_1 (fils, cols);
  34.     int valor;
  35.     for (int f=0;f<fils;f++)
  36.         for (int c=0;c<cols;c++){
  37.             cout << "Introduce el valor de matriz[" << f << "][" << c << "]: ";
  38.             cin >> valor;
  39.             matriz[f][c]=valor;
  40.         }
  41.     return(matriz);
  42. }
  43.  
  44. void PintaMatriz2D_1 (Matriz2D_1 matriz, int fils, int cols)
  45. {
  46.     for (int f=0;f<fils;f++){
  47.         for (int c=0;c<cols;c++)
  48.             cout << setw(5) << matriz[f][c];
  49.     cout << endl;
  50.     }
  51. }
  52.  
  53.  
  54.  
  55. Matriz2D_1 CopiaMatriz2D_1 (Matriz2D_1 matriz, int fils, int cols)
  56. {
  57.     Matriz2D_1 copia = CreaMatriz2D_1 (fils, cols);
  58.  
  59.     for (int f=0; f<fils; f++)
  60.         memcpy (copia[f], matriz[f], cols*sizeof(int));
  61.     return (copia);
  62.  
  63. }
  64.  
  65. Matriz2D_1 SubMatriz2D_1 (Matriz2D_1 matriz, int fil_init, int col_init, int fil_end, int col_end)
  66. {
  67.     int fils_submatriz = fil_end - fil_init + 1;
  68.     int cols_submatriz = col_end + col_init + 1;
  69.  
  70.     Matriz2D_1 submatriz = CreaMatriz2D_1 (fils_submatriz, cols_submatriz);
  71.     int fila_submatriz=0;
  72.     int col_submatriz=0;
  73.     for (int f=fil_init-1; f<fil_end; f++, fila_submatriz++)
  74.         for (int c=col_init-1; c<col_end; c++, col_submatriz++)
  75.             memcpy (submatriz[fila_submatriz][col_submatriz], matriz[f][c], sizeof(int));
  76.    
  77.     return (submatriz);
  78. }
  79.  
  80.  
  81. Matriz2D_1 EliminaColumnaMatriz2D_1 (Matriz2D_1 matriz, int fils, int cols, int columna)
  82. {
  83.     Matriz2D_1 reducida2 = CreaMatriz2D_1 (fils, cols-1);
  84.     int col_reducida=0;
  85.    
  86.     for (int f=0; f<fils; f++)
  87.         for (int c=0; c<columna; c++, col_reducida++)
  88.             memcpy (reducida2[f][col_reducida], matriz[f][c], sizeof(int));
  89.  
  90.     for (int f=0; f<fils; f++)
  91.         for (int c=columna+1; c<cols; c++, col_reducida++)
  92.             memcpy (reducida2[f][col_reducida], matriz[f][c], sizeof(int));
  93.    
  94.     return (reducida2);
  95.  
  96.  
  97.  
  98. }
  99.  
  100. Matriz2D_1 EliminaFilaMatriz2D_1 (Matriz2D_1 matriz, int fils, int cols, int fila_borrar)
  101. {
  102.     Matriz2D_1 reducida = CreaMatriz2D_1 (fils-1, cols);
  103.  
  104.     int fila_reducida = 0;
  105.     for (int f=0; f<fila_borrar; f++, fila_reducida++)
  106.         memcpy (reducida[fila_reducida], matriz[f], cols*sizeof(int));
  107.     for (int f=fila_borrar+1; f<fils; f++, fila_reducida++)
  108.         memcpy (reducida[fila_reducida], matriz[f], cols*sizeof(int));
  109.  
  110.     return (reducida);
  111. }
  112.  
  113. Matriz2D_1 TraspuestaMatriz2D_1 (Matriz2D_1 matriz, int fils, int cols)
  114. {
  115.     Matriz2D_1 transpuesta = CreaMatriz2D_1 (fils, cols);
  116.     for (int f=0;f<fils;f++)
  117.         for (int c=0;c<cols;c++)
  118.             memcpy (transpuesta[c][f], matriz[f][c], sizeof(int));
  119.  
  120.     return (transpuesta);
  121. }
  122.  
  123. Matriz2D_1 InvierteMatriz2D_1 (Matriz2D_1 matriz, int fils, int cols)
  124. {
  125.     Matriz2D_1 invertida = CreaMatriz2D_1 (fils, cols);
  126.     int fila_invertida=fils-1;
  127.     for (int f=0; f<fils; f++, fila_invertida--)
  128.         memcpy (invertida[fila_invertida], matriz[f], cols*sizeof(int));
  129.  
  130.     return (invertida);
  131.        
  132. }
  133.                    
  134. void LiberaMatriz2D_1 (Matriz2D_1 matriz,int fils,int cols)
  135. {
  136.     for (int f=0;f<fils;f++)
  137.         delete [] matriz[f];
  138.  
  139.     delete matriz;
  140. }

Si lo compilo me sale los siguientes errores:

Código HTML:
src/Matriz2D-1.cpp: In function ‘int** AleatorizaMatriz2D_1(int, int, int)’:
src/Matriz2D-1.cpp:26:30: error: too many arguments to function ‘int rand()’
/usr/include/stdlib.h:380:12: note: declared here
src/Matriz2D-1.cpp: In function ‘int** CopiaMatriz2D_1(Matriz2D_1, int, int)’:
src/Matriz2D-1.cpp:60:48: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp: In function ‘int** SubMatriz2D_1(Matriz2D_1, int, int, int, int)’:
src/Matriz2D-1.cpp:75:79: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp: In function ‘int** EliminaColumnaMatriz2D_1(Matriz2D_1, int, int, int)’:
src/Matriz2D-1.cpp:88:65: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp:92:65: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp: In function ‘int** EliminaFilaMatriz2D_1(Matriz2D_1, int, int, int)’:
src/Matriz2D-1.cpp:106:63: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp:108:63: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp: In function ‘int** TraspuestaMatriz2D_1(Matriz2D_1, int, int)’:
src/Matriz2D-1.cpp:118:56: error: ‘memcpy’ was not declared in this scope
src/Matriz2D-1.cpp: In function ‘int** InvierteMatriz2D_1(Matriz2D_1, int, int)’:
src/Matriz2D-1.cpp:128:65: error: ‘memcpy’ was not declared in this scope