suma de los elementos encima de la diagonal principal en c

Iniciado por cable, 21 Noviembre 2016, 08:26 AM

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

cable

mi programa me debe dar la suma de los elementos que se encuentran encima de la diagonal principal y lo suma, pero suma uno de mas. una matriz de ejemplo

1 2 3
4 5 6
7 8 9

me da la suma del 1,2,3,4 y "5",y no quiero que me sume en el 5 por que esta en la diagonal, no hallo una forma de ponerle restricción 
#include<stdio.h>
#include<windows.h>
void leermatriz();
void imprimirmatriz();
int main()
{
system("Color 4b");
printf("\nPrograma que imprima los elementos encima de la diagonal principal");
leermatriz();
imprimirmatriz();

}
void leermatriz()
{
int matriz[50][50];
int fila, columna,i,j;
printf("\nLectura de matriz");
do{printf("\nDame la cantidad de fila=>");
scanf("%d",&fila);
printf("Dame la cantidad de columnas=>");
scanf("%d",&columna);
if(fila!=columna)
{
printf("\nNumero de filas debe ser igual al de columnas");
}
}while(fila!=columna);

for(i=0;i<fila;i++){
for(j=0;j<columna;j++){
printf("\nDame el valor de la casilla[%d][%d]",i,j);
scanf("%d",&matriz[i][j]);
}
}
system("pause");

}
void imprimirmatriz()
{
int matriz[50][50];
int fila, columna,i,j;
printf("\nEsquinas de la matriz");
for(i=0;i<fila-1;i++){
printf("\n");
for(j=0;j<columna-1;j++){
if((i==0||i<fila-1)&&(j==0||j<columna-1)&&(i+j!=fila-1)){
system("color 1a");
printf("\t%d",matriz[i][j]);
}
}
}
system("pause");
}

creo que mi error se encuentra en la tercera función imprimir matriz, por que las anteriores parecen funcionar correctamente

Kenji-chan

el problema esta en que tus variables son locales lo cual las hace distintas a las otros


void leermatriz()
{
int matriz[50][50];
int fila, columna,i,j;
        //estas variables solo serán tomadas en cuenta dentro de esta función


void imprimirmatriz()
{
int matriz[50][50];
int fila, columna,i,j;
        //estas variables solo serán tomadas en cuenta dentro de esta función
       //y serán distintas a las de la función anterior


y al solo estar declaradas se iniciaran con un valor basura, por esa razón cuando imprimes la matriz te salen otros valores