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

Error conversion de tipo en llamada a función con matriz

Estas en el tema de Error conversion de tipo en llamada a función con matriz en el foro de C/C++ en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original #include<iostream> #include<stdio.h> #include <stdlib.h>     using namespace std ; void muestra_matriz ( int matriz [ ] [ 10 ...
  #1 (permalink)  
Antiguo 26/10/2012, 16:22
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 0
Error conversion de tipo en llamada a función con matriz

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. using namespace std;
  7. void muestra_matriz (int matriz[][10], int n)
  8. {
  9.      for (int j=0; j<n; j++)        
  10.     {
  11.         for (int i=0; i<n; i++)
  12.             cout<<matriz[i][j]<<'\t';
  13.         cout <<endl;
  14.     }
  15.      
  16.      
  17. }
  18.            
  19. int main()
  20. {
  21.     int n;
  22.    
  23.     do {cout <<"Indique el orden de la matriz cuadrada (maximo 10): ";
  24.     cin>>n;}while (n>10 || n<1);
  25.     int matriz [n][n];
  26.     cout <<"Introduzca los "<<n*n<<" valores de la matriz: ";
  27.     for (int j=0; j<n; j++)         //almacena los valores introducidos
  28.         for (int i=0; i<n; i++)
  29.             cin>>matriz[i][j];
  30.     muestra_matriz(matriz, n);
  31.     for (int j=0; j<n; j++)
  32.        
  33.     cout <<"La matriz traspuesta es: "<<endl;
  34.     for (int j=0; j<n; j++)             //muestra la matriz traspuesta
  35.     {
  36.         for (int i=0; i<n; i++)
  37.             cout<<matriz[i][j]<<'\t';
  38.         cout <<endl;
  39.     }      
  40.     system("PAUSE");
  41.     return EXIT_SUCCESS;
  42.  
  43. }

No me deja compilar y me da el siguiente error:

30 cannot convert `int (*)[((unsigned int)((int)n))]' to `int (*)[10]' for argument `1' to `void muestra_matriz(int (*)[10], int)'

no entiendo qué quiere decir, está todo en int...

Gracias por vuestros comentarios :)
  #2 (permalink)  
Antiguo 26/10/2012, 18:40
 
Fecha de Ingreso: abril-2011
Ubicación: Guadalajara, Jalisco, Mexico
Mensajes: 27
Antigüedad: 13 años
Puntos: 4
Respuesta: Error conversion de tipo en llamada a función con matriz

Pues miré y miré tu programa y nomas no entendí que es lo que quieres hacer, pero tengo un ejemplo que te puede ayudar mucho!!

lo subí hace mucho en mi pagina, espero y te sirva...

http://programacionparacoccidio.blogspot.mx/2011/06/girar-una-matriz-de-dos-dimensiones-en.html
  #3 (permalink)  
Antiguo 30/10/2012, 17:08
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Error conversion de tipo en llamada a función con matriz

La verdad es que sigo sin entender el error..
  #4 (permalink)  
Antiguo 01/11/2012, 16:31
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Error conversion de tipo en llamada a función con matriz

Cita:
Iniciado por paracoccidio Ver Mensaje
Pues miré y miré tu programa y nomas no entendí que es lo que quieres hacer
Con razón no lo entendías, el código estaba incompleto :(

Ya lo arreglé y ahora sí corre el programa y hasta funciona bien :)

He tenido que cambiar la declaración de la matriz de línea 25 poniendo números reales en lugar de la variable n para que me deje llevar la matriz a la función.. no entiendo muy bien por qué..si alguien lo sabe que lo diga...:)

Os dejo aquí el código bueno. Gracias.

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. using namespace std;
  7. void muestra_matriz (int matriz[][10], int n)
  8. {
  9.      for (int j=0; j<n; j++)        
  10.     {
  11.         for (int i=0; i<n; i++)
  12.             cout<<matriz[i][j]<<'\t';
  13.         cout <<endl;
  14.     }
  15.      
  16.      
  17. }
  18.          
  19. int main()
  20. {
  21.     int n;
  22.    
  23.     do {cout <<"Indique el orden de la matriz cuadrada (maximo 10): ";
  24.     cin>>n;}while (n>10 || n<1);
  25.     int matriz [10][10], tmatriz[10][10];
  26.     cout <<"Introduzca los "<<n*n<<" valores de la matriz: ";
  27.     for (int j=0; j<n; j++)         //almacena los valores introducidos
  28.         for (int i=0; i<n; i++)
  29.             cin>>matriz[i][j];
  30.     muestra_matriz(matriz, n);    
  31.    
  32.     for (int j=0; j<n; j++)
  33.         for (int i=0; i<n; i++)
  34.             tmatriz[i][j]=matriz[j][i];  
  35.     cout <<"La matriz traspuesta es: "<<endl;
  36.     muestra_matriz (tmatriz, n);
  37.      
  38.     system("PAUSE");
  39.     return EXIT_SUCCESS;
  40.  
  41. }
  #5 (permalink)  
Antiguo 01/11/2012, 20:50
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: Error conversion de tipo en llamada a función con matriz

La otra forma sería con punteros. Soy nuevo en esto, pero encontré por ahí una forma de pasar matrices bidimensionales a través de puntero. Aún me cuesta matrices así que lo que está en comentarios como "explicación" no sé si es valido, bueno aquí te lo dejo:

Código C++:
Ver original
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. using namespace std;
  7. void muestra_matriz (int **matriz, int n)
  8. {
  9.      for (int j=0; j<n; j++)
  10.     {
  11.         for (int i=0; i<n; i++)
  12.             cout<<matriz[i][j]<<'\t';
  13.         cout <<endl;
  14.     }
  15.  
  16.  
  17. }
  18.  
  19. int main()
  20. {
  21.     int n;
  22.  
  23.     do {cout <<"Indique el orden de la matriz cuadrada (maximo 10): ";
  24.     cin>>n;}while (n<1);
  25.     int matriz [n][n], tmatriz[n][n];
  26.     cout <<"Introduzca los "<<n*n<<" valores de la matriz: ";
  27.     for (int j=0; j<n; j++)         //almacena los valores introducidos
  28.         for (int i=0; i<n; i++)
  29.             cin>>matriz[i][j];
  30.  
  31.     //Declaramos 2 punteros para asignarles los elementos del array
  32.     int count = 0;
  33.     int *punteroMatriz[n], *punteroTMatriz[n];
  34.  
  35.     //matriz traspuesta
  36.     for (int j=0; j<n; j++)
  37.         for (int i=0; i<n; i++)
  38.             tmatriz[i][j]=matriz[j][i];
  39.  
  40.     //Almacenamos referente a las "filas (que también contiene a las columnas)" la direccion de la matriz y tmatriz en el puntero.
  41.     while(count<n)
  42.     {
  43.         punteroMatriz[count] = matriz[count];
  44.         punteroTMatriz[count] = tmatriz[count];
  45.         count++;
  46.     }
  47.  
  48.     //pasamos este puntero a la variable int **matriz
  49.     //En este caso pasamos la direccion de punteroMatriz a **matriz
  50.     //La cual apuntaria tanto a las filas o columnas del array.
  51.     muestra_matriz(punteroMatriz, n);
  52.     cout <<"La matriz traspuesta es: "<<endl;
  53.     muestra_matriz (punteroTMatriz, n);
  54.  
  55.     system("PAUSE");
  56.     return EXIT_SUCCESS;
  57.  
  58. }

Etiquetas: compilar, conversion, int, llamada, matriz, tipo
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 10:21.