Hola Isaac,<br><br>
<div class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_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="hm"> </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>