<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
hola pau<BR> <BR>
 <BR>
En la forma que trabaja sizeof no lo recuerdo muy bien pero....<BR>
 <BR>
> Date: Fri, 3 Sep 2010 21:06:24 +0200<BR>> From: pmb.manent@gmail.com<BR>> To: cconclase@listas.conclase.net<BR>> Subject: [C con Clase] Problema con sizeof<BR>> <BR>> Buenas noches a todos,<BR>> <BR>> Primero agradecer todo el trabajo y empeño dedicado para realizar este <BR>> fantastico web.<BR>> Les escribo porque tengo un problema con el sizeof:<BR>> Yo quiero hacer una función que me diga cuantas filas y columnas <BR>> tiene una matriz. Para eso uso el operador sizeof. El codigo que uso es<BR>> f=sizeof A[0]/sizeof(int);//filas totales<BR>> c=sizeof A/sizeof A[0];//columnas totales<BR>> Estas lineas funcionan perfectamente en el main, pero al introducirlas <BR>> en una función no da buenos resultados. El codigo completo que uso para <BR>> comprovar el error es<BR>> <BR>> #include <iostream><BR>> <BR>> using namespace std;<BR>> <BR>> #define cmax 10<BR>> #define fmax 10<BR>> <BR>> void sizematrix (int mat[cmax][fmax], int &c, int &f);<BR>> <BR>> int main(){<BR>> int A[cmax][fmax];<BR>> int c, f;<BR>> <BR>> sizematrix(A,c,f);<BR>> cout<<"filas = "<<f<<", columnas = "<<c<<endl;//esto corresponde a <BR>> la funcion sizematrix<BR>> <BR>> f=sizeof A[0]/sizeof(int);//filas totales<BR>> c=sizeof A/sizeof A[0];//columnas totales<BR>> cout<<"filas = "<<f<<", columnas = "<<c<<endl;//esto corresponde al main<BR>> <BR>> system("pause");<BR>> }<BR>> <BR>
Analizando la declaracion se la funcion, entiendo que estas mandando un arreglo bidimencional, pero en las operaciones estas manejando como si fuera nada unidimencional<BR>
    f=sizeof A[0]/sizeof(int);//filas totales        c=sizeof A/sizeof A[0];//columnas totales<BR>*    f=sizeof A[0][0]/sizeof(int);//filas totales     c=sizeof A[0]/sizeof A[0][0];//columnas totales<BR>
segun yo la forma correcta seria como la segunda linea. Pero si estas empleando apuntadores, ignora lo leido.<BR>
 <BR>
...Espero a verte servido<BR>
<BR>> void sizematrix (int mat[cmax][fmax], int &c, int &f){<BR>> f=sizeof mat[0]/sizeof(int);//files totals<BR>> c=sizeof mat/sizeof mat[0];//columnes totals<BR>> }<BR>> <BR>> El caso es que el main me dice que la matriz es de 10X10, pero la <BR>> función me dice que es de 10X0. He comprovado toda la sintaxis y también <BR>> he provado distintas formas de hacer lo mismo, pero sin resultados.<BR>> Agradezco de antemano cualquier sugerencia.<BR>> <BR>> Pau<BR>> <BR>> <BR>> _______________________________________________<BR>> Lista de correo Cconclase Cconclase@listas.conclase.net<BR>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net<BR>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ<BR><BR>                                          </body>
</html>