Sumar triangulos en una matriz nxn en C

Iniciado por Ndiar, 28 Julio 2018, 03:22 AM

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

Ndiar

ya tengo la mayoria del codigo listo en C , lo unico q no entiendo es que va en el for de "la suma azul", me esta dando un valor incorrecto de la suma!, porfavor si alguien me explicara.
la idea es esta
tengo una matriz 3x3 de ejemplo =  (1 2 1)
                                                    (2 1 3)
                                                    (3 4 1)

y se quiere sumar los valores 2+1+3=6 que seria "la suma roja" la cual ya tengo lista
pero me da problemas la otra suma que es 3+4+1 que es la "suma azul"  y eso se arregla en los for de las sumas q estan en mi codigo, hace mucho rato que estoy tratando de comprender y no me puedo dar cuenta, necesito ayudaa, q alguien me explique  :(



#include <stdio.h>
int main(){
    int N;
    printf(" Ingrese n : ");
    scanf("%d",&N);
   
   int a[N][N];
   
   int f,c;
   
   for ( f = 0 ; f < N ; f++) {
       for ( c = 0 ; c < N ; c++) {
           scanf("%d",&a[f][c]);
       }
   }    
       
   long int sumaAzul = 0;
   
   for (f = 1 ; f < c ; f++) { //////////////////////////
       for (c = 1 ; c <f ; c++) {
           sumaAzul = sumaAzul + a[f][c];
       }
   }
   
   printf("Suma triangulo AZUL = %ld\n",sumaAzul);
   
   long int sumaRojo = 0;
   
   for (f = 0 ; f < N ; f++) {
       for (c = 1 ; c <= f ; c++) {
           sumaRojo = sumaRojo + a[f][c];
       }
   }
   
   printf("Suma triangulo ROJO = %ld\n",sumaRojo);
   
   if (sumaRojo == sumaAzul) {
       printf("Suma Tr Rojo y Azul son iguales");
   }
   else {
       if (sumaRojo > sumaAzul) {
           printf("Suma Tr Rojo es mayor");
       }
       else {
           printf("Suma Tr Azul es mayor");
       }
   }
   
   
   return 0;
}

Ndiar

ya encontre la solucion... por si alguien lo necesita era:

long int sumaRojo = 0;
        for (f = 0 ; f < N-1 ; f++) {
        for (c = f+1 ; c < N ; c++) {
            sumaRojo = sumaRojo + a[f][c]; rojo
        }
    }



y la otra era


long int sumaAzul = 0;   
        for (f = 1 ; f < N ; f++) {
        for (c = N-f ; c <N ; c++) { 
            sumaAzul = sumaAzul + a[f][c];
        }
    }