Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: cable en 21 Noviembre 2016, 08:26 am



Título: suma de los elementos encima de la diagonal principal en c
Publicado por: cable en 21 Noviembre 2016, 08:26 am
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 
Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3. void leermatriz();
  4. void imprimirmatriz();
  5. int main()
  6. {
  7. system("Color 4b");
  8. printf("\nPrograma que imprima los elementos encima de la diagonal principal");
  9. leermatriz();
  10. imprimirmatriz();
  11.  
  12. }
  13. void leermatriz()
  14. {
  15. int matriz[50][50];
  16. int fila, columna,i,j;
  17. printf("\nLectura de matriz");
  18. do{printf("\nDame la cantidad de fila=>");
  19. scanf("%d",&fila);
  20. printf("Dame la cantidad de columnas=>");
  21. scanf("%d",&columna);
  22. if(fila!=columna)
  23. {
  24. printf("\nNumero de filas debe ser igual al de columnas");
  25. }
  26. }while(fila!=columna);
  27.  
  28. for(i=0;i<fila;i++){
  29. for(j=0;j<columna;j++){
  30. printf("\nDame el valor de la casilla[%d][%d]",i,j);
  31. scanf("%d",&matriz[i][j]);
  32. }
  33. }
  34. system("pause");
  35.  
  36. }
  37. void imprimirmatriz()
  38. {
  39. int matriz[50][50];
  40. int fila, columna,i,j;
  41. printf("\nEsquinas de la matriz");
  42. for(i=0;i<fila-1;i++){
  43. printf("\n");
  44. for(j=0;j<columna-1;j++){
  45. if((i==0||i<fila-1)&&(j==0||j<columna-1)&&(i+j!=fila-1)){
  46. system("color 1a");
  47. printf("\t%d",matriz[i][j]);
  48. }
  49. }
  50. }
  51. system("pause");
  52. }
creo que mi error se encuentra en la tercera función imprimir matriz, por que las anteriores parecen funcionar correctamente


Título: Re: suma de los elementos encima de la diagonal principal en c
Publicado por: Kenji-chan en 21 Noviembre 2016, 18:32 pm
el problema esta en que tus variables son locales lo cual las hace distintas a las otros

Código:
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