elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:05  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Suma triangulo superior matriz
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Suma triangulo superior matriz  (Leído 391 veces)
CarLiLlooo


Desconectado Desconectado

Mensajes: 333


Veni, vidi, vici


Ver Perfil WWW
Suma triangulo superior matriz
« en: 22 Enero 2012, 20:16 »

Buenas,

No entiendo porque este código me da siempre el último elemento de la diagonal principal de la matriz. Quizás el fallo esté en los 'for', pero llevo todo el día practicando y yo ya  no veo el error.

Lo que me tendría que dar en realidad es la suma de los elementos que están por encima de la diagonal principal de la matriz.

El código es éste:

Código
#include <stdio.h>
#define MAX 5
 
void leer_matriz(unsigned v[][MAX], unsigned t);
void triangulo_superior(unsigned v[][MAX], unsigned t);
 
int main()
{
   unsigned t, v[MAX][MAX];
   int x;
 
   do
   {
       printf("Cuantos elementos va a tener la matriz?: ");
       scanf("%u", &t);
   }while(t<0 || t>MAX);
 
   leer_matriz(v, t);
 
triangulo_superior(v, t);
 
 
   return 0;
 
}
 
void leer_matriz(unsigned v[][MAX], unsigned t)
{
   unsigned i, j;
 
   for(i=0; i<t; i++)
       for(j=0; j<t; j++)
       {
           printf("Dame el elemento %u de la columna %u: ", j+1, i+1);
           scanf("%u", &v[i][j]);
       }
 
   for(i=0; i<t; i++)
   {
       for(j=0; j<t; j++)
           printf("%u  ", v[i][j]);
 
       printf("\n");
   }
}
 
void triangulo_superior(unsigned v[][MAX], unsigned t)
{
   unsigned i, j;
   int x=0;
 
   for(i=0; i<t; i++)
       for(j=1; j<=i; j++)
       x=x+v[i][j];
 
       printf("La suma es: %d", x);
}
 

Saludos!


En línea

Más que buenos principios prefiero mejores finales.
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Suma triangulo superior matriz
« Respuesta #1 en: 22 Enero 2012, 20:31 »

Podrías expresarte con más claridad?

Es un error de resultado o de ejecución?

Qué se supone debería hacer, y que hace en realidad?

Leyendo tu post no queda muy claro que se diga

Aun así, suponiendo que lo que quieres sumar es los elementos superiores a la diagonal, aquí tienes un problema:

Código
    for(i=0; i<t; i++)
       for(j=1; j<=i; j++)

Con ese bucle estás sumando los elementos que hay entre el segundo elemento de cada columna y la diagonal, esta inclusive.

La corrección:
Código
    for(i=0; i<t; i++)
       for(j=i+1; j<t; j++)



En línea

CarLiLlooo


Desconectado Desconectado

Mensajes: 333


Veni, vidi, vici


Ver Perfil WWW
Re: Suma triangulo superior matriz
« Respuesta #2 en: 22 Enero 2012, 20:36 »

Sí, claro. Lo que el programa debería hacer es hallar la suma de todos los elementos de la matriz que estén por encima de la diagonal principal, sin incluirla.

Por ejemplo:

1 2 3
4 5 6
7 8 9

Sería: 2+6+3=11.

Lo que mi código hubiera hecho era darme como resultado el '9'.

Y digo hacía porque he cambiado mis for por los tuyos y ya va bien.

Gracias. Miaré porqué era.
En línea

Más que buenos principios prefiero mejores finales.
bdoX

Desconectado Desconectado

Mensajes: 31



Ver Perfil
Re: Suma triangulo superior matriz
« Respuesta #3 en: 22 Enero 2012, 20:52 »

La verdad es que no le veo el grado de dificultad.

Esto es lo que hace toda la tarea.

Código:
   for(i=0; i<t; i++)
        for(j=0; j<t; j++)
            if ( j > i )
                x += v[i][j];

Acá dejo el code completo

Código
#include <stdio.h>
 
#define MAX 5
 
void leer_matriz (unsigned v[][MAX], unsigned t);
void triangulo_superior (unsigned v[][MAX], unsigned t);
 
int main()
{
   unsigned t, v[MAX][MAX];
 
   do
   {
       printf ( "Cuantos elementos va a tener la matriz?: " );
       scanf ( "%u", &t );
   } while (t < 0 || t > MAX);
 
   leer_matriz (v, t);
   triangulo_superior (v, t);
 
   setbuf (stdin, NULL);
   getchar ();
   return 0;
}
 
void leer_matriz (unsigned v[][MAX], unsigned t)
{
   unsigned i, j;
 
   for (i = 0; i < t; i++)
   {
       for (j = 0; j < t; j++)
       {
           printf ( "Dame el elemento M[%u][%u]: ", (i + 1), (j + 1) );
           scanf ( "%u", &v[i][j] );
       }
   }
 
   for (i = 0; i < t; i++)
   {
       for (j = 0; j < t; j++)
           printf ( "%u\t", v[i][j] );
 
       printf ( "\n" );
   }
}
 
void triangulo_superior (unsigned v[][MAX], unsigned t)
{
   unsigned i, j;
   int x = 0;
 
   for (i = 0; i < t; i++)
       for (j = 0; j < t; j++)
           if (j > i)
               x += v[i][j];
 
   printf ( "La suma es: %d", x );
}
 
 

saludos!
« Última modificación: 22 Enero 2012, 21:53 por bdoX » En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Suma triangulo superior matriz
« Respuesta #4 en: 22 Enero 2012, 20:57 »


Gracias. Miaré porqué era.

Te lo expliqué en mi post:


Con ese bucle estás sumando los elementos que hay entre el segundo elemento de cada columna y la diagonal, esta inclusive.
En línea

CarLiLlooo


Desconectado Desconectado

Mensajes: 333


Veni, vidi, vici


Ver Perfil WWW
Re: Suma triangulo superior matriz
« Respuesta #5 en: 23 Enero 2012, 00:59 »

Sí, pero que tú me lo digas y yo por tanto sepa la respuesta, no quiere decir que lo entienda  ;)

Gracias a los dos por ayudarme.
En línea

Más que buenos principios prefiero mejores finales.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
algoritmo triángulo
Programación C/C++
flakbencho 3 558 Último mensaje 11 Junio 2007, 22:04
por alvk4r
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
EddyW 2 1,875 Último mensaje 14 Agosto 2010, 06:18
por EddyW
matriz suma de columnas"problema con una sentencia y ciclo for"
Programación C/C++
lala.pff 1 1,223 Último mensaje 2 Abril 2011, 18:37
por lala.pff
Matriz Dentro de otra matriz
Programación Visual Basic
moba741120 3 1,629 Último mensaje 13 Abril 2011, 18:29
por raul338
matriz en c++ triangulo
Programación C/C++
yeimival 2 109 Último mensaje 11 Mayo 2012, 06:07
por yeimival
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines