6 jun
2017

¿Por qué mi sumador me arroja basura? (lenguaje C)

En un ejercicio me dan una matriz completa de 3x3 y tengo que crear un menu con un switch con letras que haga lo siguiente:

Si se presiona 'a' sumar la diagonal principal de la matriz Si se presiona 'b' sumar la diagonal secundaria de la matriz Si se presiona 'c' sumar el triangulo superior considerando diagonal principal Si se presiona 'd' sumar el triangulo inferior considerando diagonal principal Si se presiona 'e' sumar el triangulo superior considerando diagonal secundaria Si se presiona 'f' sumar el triangulo inferior considerando diagonal secundaria

Tiene que ser con esas letras y mediante funciones. Lo tengo hecho, pero el programa me devuelve basura cuando lo hago. Mi duda es si tengo algo mal escrito que cause que me devuelva basura y si lo tengo, que me dijeran en donde sería. Ya lo revisé como 5 veces y no lo puedo corregir. Gracias de antemano.

Les dejo el programa:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

#define FIL 3
#define COL 3

int sumaDiagPrin (int m[][COL], int tam) ///LA FUNCION QUE SUMA LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL.
{
    int i=0, res=0;

    for (i=0;i<tam-1;i++)
    {
        res= res + m[i][i];
    }

    return res;
}

int sumaDiagSecun (int m[][COL], int tam) ///LA FUNCION QUE SUMA LOS ELEMENTOS DE LA DIAGONAL SECUNDARIA.
{
    int i=0, res=0, j;

    j=i+2;

    for (i=0;i<tam-1;i++)
    {
        res= res + m[i][j];
        j--;
    }

    return res;
}

int sumaTrianSupDiagonalPrincipal (int m[][COL], int tam) ///SUMA LOS ELEMENTOS DEL TRIANGULO SUPERIOR DE LA DIAG PRINC.
{
    int i=0, j, res=0;

    j=i+1;

    for (i=0;i<j;i++)
    {
        j=i+1;
        for(j=i+1;j<tam;j++)
        {
            res= res + m[i][j];
        }
    }

    return res;
}

int sumaTrianInfDiagonalPrincipal (int m[][COL], int tam) ///SUMA LOS ELEMENTOS DEL TRIANGULO INFERIOR DE LA DIAG PRIN.
{
    int j, i, res=0;

    for (i=1;i<tam;i++)
    {
        for (j=0;j<tam;j++)
        {
            if (i>j)
            {
                res= res + m[i][j];
            }
        }
    }

    return res;
}

int sumaTrianSupDiagonalSecundaria (int m[][COL], int tam) ///SUMA LOS ELEMENTOS DEL TRIANGULO INFERIOR DE LA DIAG SECUN.
{
    int i, j, res=0;

    for (i=0;i<tam-1;i++)
    {
        for (j=0;j<tam-1;j++)
        {
            res= res + m[i][j];
        }
    }

  return res;
}

int sumaTrianInfDiagonalSecundaria (int m[][COL], int tam) ///SUMA LOS ELEMENTOS DEL TRIANGULO INFERIOR DE LA DIAG SEC.
{
    int i, j, res=0, aux=0;

    for (j=tam-1;j>0;j--)
    {
        for (i=tam-1;i>aux;i--)
        {
            res = res + m[i][j];
        }

        aux++;
    }

    return res;
}

int main()
{
    int i, j, resultado=0;
    int mat[FIL][COL]={{1,2,3},{4,5,6},{7,8,9}};
    char letra;

    printf("\nmenu de operaciones con matrices");
    printf("\nescriba 'a' para sumar la diagonal principal");
    printf("\nescriba 'b' para sumar la diagonal secundaria");
    printf("\nescriba 'c' para sumar el triangulo superior de la diagonal principal");
    printf("\nescriba 'd' para sumar el triangulo inferior de la diagonal principal");
    printf("\nescriba 'e' para sumar el triangulo superior de la diagonal secundaria");
    printf("\nescriba 'f' para sumar el triangulo inferior de la diagonal secundaria");
    scanf("%c", &letra);

    switch(letra)
    {
    case 'a':
        resultado=sumaDiagPrin(mat[FIL][COL], COL);
        printf("\nla suma de los elementos de la diagonal principal es %d", resultado);
        break;

    case 'b':
        resultado=sumaDiagSecun(mat[FIL][COL], COL);
        printf("\nla suma de los elementos de la diagonal secundaria es %d", resultado);
        break;

    case 'c':
        resultado=sumaTrianSupDiagonalPrincipal(mat[FIL][COL], COL);
        printf("\nla suma de los elementos del triangulo superior en la diagonal principal es %d", resultado);
        break;

    case 'd':
        resultado=sumaTrianInfDiagonalPrincipal(mat[FIL][COL], COL);
        printf("\nla suma de los elementos del triangulo inferior en la diagonal principal es %d", resultado);
        break;

    case 'e':
        resultado=sumaTrianSupDiagonalSecundaria(mat[FIL][COL], COL);
        printf("\nla suma de los elementos del triangulo superior en la diagonal secundaria es %d", resultado);
        break;

    case 'f':
        resultado=sumaTrianInfDiagonalSecundaria(mat[FIL][COL], COL);
        printf("\nla suma de los elementos del triangulo inferior en la diagonal secundaria es %d", resultado);
        break;
    }

    return 0;
}

COMENTARIOS

DEJA TU COMENTARIO

© 2017 website by Rubit Corporation