duda con ejercicio de matrices

Iniciado por andoporto, 6 Febrero 2015, 22:47 PM

0 Miembros y 1 Visitante están viendo este tema.

andoporto

Hola, tengo la siguiente codificación, debe calcular las diagonales principal y secundaria, el triángulo superior y la traza, no sé porqué pero no me acumula la variable de traza, qie puede ser?


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

#define fil 2
#define col 2

int menu();
int * cargar_mat (int[fil][col],int* );
void mostrar_DP (int [fil][col]);
void mostrar_DS (int [fil][col]);
void mostrar_TS (int [fil][col]);
void mostrar_TR (int [fil][col]);

int main()
{
    int opc,mat[fil][col],cantElem=0;
    cargar_mat(mat,&cantElem);
    printf("\t escoja una opcion:");
    opc=menu();
    while(opc!=0)
    {
        switch(opc)
        {
        case 1:
        {
            mostrar_DP(mat);
            printf("\n");
            //printf("elementos:%d\n",cantElem);
        }
        break;
        case 2:
        {
            mostrar_DS(mat);
            printf("\n");
        }
        break;
        case 3:
        {
            mostrar_TS(mat);
            printf("\n");
        }
        case 4:
        {
            mostrar_TR(mat);
            printf("\n");
        }
        default:
        {

        } break;
        }
        printf("\t escoja una opcion:\n");
        opc=menu();
    }
    printf("\n");
    return 0;
}

int * cargar_mat (int mat[fil][col],int* cantE)
{
    int i,j;
    for(i=0; i<fil; i++)
    {
        for(j=0; j<col; j++)
        {
            printf("ingrese un numero: ");
            scanf("%d",&mat[i][j]);
            if(mat[i][j]==0)
                return  cantE;
            else
                (*cantE)++;
        }
    }
}


int menu()
{
    int opc;
    printf("\n");
    printf("\n1_ver diagonal principal\n2_ver diagonal secundaria\n3_triangulo superior\n4_traza\n0_salir\n");
    scanf("%d",&opc);
    printf("\n");
    return opc;
}

void mostrar_DP (int m[fil][col])
{
    int i;
    for(i=0; i<fil; i++)
        printf("%d\n",m[i][i]);
}


void mostrar_DS (int m[fil][col])
{
    int i;
    for(i=0; i<fil; i++)
        printf("%d\n",m[i][(col-1)-i]);
}

void mostrar_TS (int m[fil][col])
{
    int i;
    for(i=0; i<fil; i++)
        printf("%d\n",m[i][i]);
}

void mostrar_TR (int m[fil][col])
{
    int i;
    int acu=0;
    for(i=0; i<fil; i++)
    {
        acu+=m[i][i];
        printf("%d\n",acu);
    }

}


engel lex

ejecuto tu programa y si acumula... muestra que datos introduces y cuales esperas...

por cierto, evita usar conio, no es parte del standrad c, sin contar que este programa no lo necesita
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.