Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2012, 11:05
antonio715
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 0
Error al pasar matriz por referencia a función

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. #define F 10
  7. #define C 10
  8.  
  9.  
  10. using namespace std;
  11.  
  12. int matriz[F][C];
  13.  
  14. void punto_silla (int **matriz)
  15. {
  16.      int MinCol=100, ContCol=0;
  17.      int MaxFil=0, ContFil=0;
  18.      int PuntoS=0;
  19.      for (int j=0; j<C; j++)
  20.       {
  21.       for (int i=0; i<F; i++)
  22.          if (matriz[i][j]<=MinCol)
  23.               {
  24.               MinCol=matriz[i][j];
  25.               ContCol=i;
  26.               }
  27.       for (int j2=0; j2<C; j2++)
  28.          MaxFil=MaxFil>=matriz[ContCol][j2]?MaxFil:matriz[ContCol][j2];
  29.       if (matriz[ContCol][j]==MaxFil)
  30.         {
  31.         PuntoS++;
  32.         cout<<"Hay un punto de silla ("<<matriz[ContCol][j]<<") en:"<<endl;
  33.         cout<<"Fila: "<<j+1<<'t'<<"Columna: "<<ContCol+1<<endl;
  34.         }    
  35.       }
  36.      cout<<"Hay "<<PuntoS<<" puntos de silla"<<endl;
  37. }
  38. void matriz_aleatoria()
  39. {
  40.      
  41.      
  42.       srand(time(0));
  43.       for (int i=0; i<F; i++)
  44.           for (int j=0; j<C; j++)
  45.              matriz[i][j]= rand()%100;
  46.  
  47.      
  48.      
  49.      
  50.      
  51. }
  52. void escribe_matriz(int **matriz)  
  53. {
  54.      for (int i=0; i<F; i++)
  55.           for (int j=0; j<C; j++)
  56.           {
  57.           cout<<matriz[i][j]<<'t';
  58.           cout<<endl;
  59.           }
  60.      
  61. }  
  62. int main()
  63. {
  64.  
  65.     matriz_aleatoria();
  66.     escribe_matriz(&matriz);
  67.     punto_silla (&matriz);
  68.    
  69.     system("PAUSE");
  70.     return EXIT_SUCCESS;
  71.  
  72. }

Buenas, este programita me da los siguientes errores:

Linea 66 cannot convert `int (*)[10][10]' to `int**' for argument `1' to `void escribe_matriz(int**)'
Línea 67 cannot convert `int (*)[10][10]' to `int**' for argument `1' to `void punto_silla(int**)'

y no sé qué quieren decir, supongo que hay algo mal en los punteros...
Se podría hacer sin punteros? y sin declarar la matriz como variable global? intenté generar la matriz aleatoriamente con matriz_aleatoria y luego hacer un return para llevarla a main pero no hubo manera..

Agradezco vuestros comentarios. Un saludo.