<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
gracias Steven mejor explicado no podria estar, te agradesco mucho me has aclarado y resolvido mis dudas<br><br><hr id="stopSpelling">Date: Thu, 13 May 2010 11:35:27 +0200<br>From: srd4121@njit.edu<br>To: cconclase@listas.conclase.net<br>Subject: Re: [C con Clase] no entiendo mi error<br><br>Hola Isaac,<br><br>
<div class="ecxgmail_quote">2010/5/13 Isaac Corcino <span dir="ltr"><a href="mailto:isunix@hotmail.com">isunix@hotmail.com</a></span> 
<div> </div>
<div>Veamos el código fuente.</div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>#include<stdio.h><br><br>int suma_matriz(int mat[][], int a, int b);<br></div></blockquote>
<div> </div>
<div>Esto es un error. Para los arrays de varias dimensiones, debes indicar las cantidades de cada array. La excepción es el primer array que es optativo indicar la cantidad. En tu caso, esto sería,</div>
<div> </div>
<div>int suma_matriz( int mat[][100], int a, int b );</div>
<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>void main(void)<br>{<br>    int a, b, i, j, num;<br>    int mat[100][100];<br>    <br>    printf("De cuantas columnas la matriz  \n");<br>    scanf("%d", &a);<br>    printf("De cuantas filas la matriz  \n");<br>
    scanf("%d", &b);<br>  </div></blockquote>
<div> </div>
<div>Sugiero que uses nombres más descriptivos para tus variables importantes. En este caso, en lugar de usar 'a' y 'b', escribe 'nCols' y 'nFilas', respectivamente. Esto aumenta la legibilidad de tu código fuente y serás menos propenso a cometer errores.</div>

<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>  <br>    for(i=0; i<a; i++){<br>        for(j=0; j<b; j++){<br>                printf("\ndame el numero de la matriz %d fila  %d columna: ", j, i);<br>                scanf("%d", &num);<br>
                mat[i][j]=num;</div></blockquote>
<div> </div>
<div>No es necesario usar 'num' como variable auxiliar. Usa 'mat' directamente con 'scanf()'. Esto es,</div>
<div> </div>
<div>scanf( "%d", &mat[i][j] );</div>
<div> </div>
<div>Hay un matiz que quiero exponer. No es habitual representar las filas de una matriz como la segunda dimensión del array y las columnas como la primera dimensión. No quiero decir que esto sea un error, sino simplemente que no es lo habitual. Con tal de que sigas este diseño en todo tu programa, no habrá problemas.</div>

<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>        }<br>    }<br>    suma_matriz(mat, a, b);<br></div></blockquote>
<div> </div>
<div> </div>
<div>Aquí invocas la función, pero no haces nada con el valor retornado que debería ser la suma de los elementos de la matriz. Deberías guardar el número calculado de por 'suma_matriz()'. Por ejemplo,</div>
<div> </div>
<div>num = suma_matriz( mat, a, b );</div>
<div> </div>
<div>Y supongo que querrás mostrar este resultado a por pantalla, así que usa 'printf()'.</div>
<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>    <br>}<br><br>int suma_matriz(int mat[][], int a, int b)<br></div></blockquote>
<div> </div>
<div> </div>
<div>Con el prototipo cambiado, aquí también debes indicar las cantidades de cada "dimensión". Esto es,</div>
<div> </div>
<div>int suma_matriz( int mat[][100], int a, int b )</div>
<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>{<br>    int sum, k, l, tem;<br>    sum=0<br>    </div></blockquote>
<div> </div>
<div>Aquí te falta un punto y coma para terminar la sentencia:</div>
<div> </div>
<div>sum = 0;</div>
<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>    for(k=0; k<a; k++){<br>            for(l=0; l<b; l++){<br>                    tem=mats[k][l];<br>                    sum=sum+tem;<br></div></blockquote>
<div> </div>
<div> </div>
<div>Nuevamente, no es necesario usar una variable auxiliar; usa 'mat' directamente.</div>
<div> </div>
<div>Puedes usar el operador de suma y asignación; esto es,</div>
<div> </div>
<div>sum += mat[i][j];</div>
<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>            }<br>    }<br>    printf("la suma total es: %d", sum);<br></div></blockquote>
<div> </div>
<div> </div>
<div>Esto es un error de diseño. Esta función debe cumplir la tarea imputada; ni más ni menos. La tarea de esta función es la de calcular la suma de todos los elementos del array. Sin embargo, realizas otra tarea: imprimes el resultado en la pantalla. Esta tarea no forma parte del diseño de esta función y por tanto no debería estar aquí.</div>

<div> </div>
<div>Además, esta función DEBE retornar un número entero, pero no lo hace. Según el diseño, deberías retornar el valor en 'sum'. La parte del programa que haya invocado a esta función debería manipular este número retornado como debe.</div>

<div> </div>
<div> </div>
<blockquote style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="ecxgmail_quote">
<div>}<br><br>este es el codigo y lo que hace o pretendo que haga es sumar los valores de la matriz y quiero saber es donde estoy mal por que me salen errores<br>ojala que alguien m pueda explicar<br>gracias<br>
<div class="ecxhm"> </div></div></blockquote>
<div> </div>
<div>En el futuro, procura indicar cuáles son los errores marcados, los mensajes de error lanzados, y quiénes (qué programas) te han indicado los errores: compilador, enlazador, y/o el sistema operativo. De lo contrario, tardaremos más en responderte y en darnos cuenta de todos los errores.</div>

<div> </div>
<div> </div>
<div>Espero que lo anterior te ayude.</div>
<div> </div>
<div>Steven</div>
<div> </div></div>                                         <br /><hr />¿Perdido entre tantos correos?  <a href='www.hotmailhotness.com.mx' target='_new'>Enciende tu hotness con Hotmail</a></body>
</html>