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
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