elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 13,113 veces)
Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


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

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
  1. #include <stdio.h>
  2. #define MAX 5
  3.  
  4. void leer_matriz(unsigned v[][MAX], unsigned t);
  5. void triangulo_superior(unsigned v[][MAX], unsigned t);
  6.  
  7. int main()
  8. {
  9.    unsigned t, v[MAX][MAX];
  10.    int x;
  11.  
  12.    do
  13.    {
  14.        printf("Cuantos elementos va a tener la matriz?: ");
  15.        scanf("%u", &t);
  16.    }while(t<0 || t>MAX);
  17.  
  18.    leer_matriz(v, t);
  19.  
  20. triangulo_superior(v, t);
  21.  
  22.  
  23.    return 0;
  24.  
  25. }
  26.  
  27. void leer_matriz(unsigned v[][MAX], unsigned t)
  28. {
  29.    unsigned i, j;
  30.  
  31.    for(i=0; i<t; i++)
  32.        for(j=0; j<t; j++)
  33.        {
  34.            printf("Dame el elemento %u de la columna %u: ", j+1, i+1);
  35.            scanf("%u", &v[i][j]);
  36.        }
  37.  
  38.    for(i=0; i<t; i++)
  39.    {
  40.        for(j=0; j<t; j++)
  41.            printf("%u  ", v[i][j]);
  42.  
  43.        printf("\n");
  44.    }
  45. }
  46.  
  47. void triangulo_superior(unsigned v[][MAX], unsigned t)
  48. {
  49.    unsigned i, j;
  50.    int x=0;
  51.  
  52.    for(i=0; i<t; i++)
  53.        for(j=1; j<=i; j++)
  54.        x=x+v[i][j];
  55.  
  56.        printf("La suma es: %d", x);
  57. }
  58.  

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

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
  1.    for(i=0; i<t; i++)
  2.        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
  1.    for(i=0; i<t; i++)
  2.        for(j=i+1; j<t; j++)



En línea

Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


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

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



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

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
  1. #include <stdio.h>
  2.  
  3. #define MAX 5
  4.  
  5. void leer_matriz (unsigned v[][MAX], unsigned t);
  6. void triangulo_superior (unsigned v[][MAX], unsigned t);
  7.  
  8. int main()
  9. {
  10.    unsigned t, v[MAX][MAX];
  11.  
  12.    do
  13.    {
  14.        printf ( "Cuantos elementos va a tener la matriz?: " );
  15.        scanf ( "%u", &t );
  16.    } while (t < 0 || t > MAX);
  17.  
  18.    leer_matriz (v, t);
  19.    triangulo_superior (v, t);
  20.  
  21.    setbuf (stdin, NULL);
  22.    getchar ();
  23.    return 0;
  24. }
  25.  
  26. void leer_matriz (unsigned v[][MAX], unsigned t)
  27. {
  28.    unsigned i, j;
  29.  
  30.    for (i = 0; i < t; i++)
  31.    {
  32.        for (j = 0; j < t; j++)
  33.        {
  34.            printf ( "Dame el elemento M[%u][%u]: ", (i + 1), (j + 1) );
  35.            scanf ( "%u", &v[i][j] );
  36.        }
  37.    }
  38.  
  39.    for (i = 0; i < t; i++)
  40.    {
  41.        for (j = 0; j < t; j++)
  42.            printf ( "%u\t", v[i][j] );
  43.  
  44.        printf ( "\n" );
  45.    }
  46. }
  47.  
  48. void triangulo_superior (unsigned v[][MAX], unsigned t)
  49. {
  50.    unsigned i, j;
  51.    int x = 0;
  52.  
  53.    for (i = 0; i < t; i++)
  54.        for (j = 0; j < t; j++)
  55.            if (j > i)
  56.                x += v[i][j];
  57.  
  58.    printf ( "La suma es: %d", x );
  59. }
  60.  
  61.  

saludos!
« Última modificación: 22 Enero 2012, 21:53 pm 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 pm »


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

Constantinoplero


Desconectado Desconectado

Mensajes: 346


Veni, vidi, vici


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

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
matriz en c++ triangulo
Programación C/C++
yeimival 2 4,203 Último mensaje 11 Mayo 2012, 06:07 am
por yeimival
Matriz Triangular Superior
Programación C/C++
m@o_614 9 25,970 Último mensaje 30 Junio 2013, 19:28 pm
por m@o_614
Suma de matriz + matriz invertida
Programación C/C++
sora_ori 3 3,352 Último mensaje 16 Enero 2014, 16:35 pm
por leosansan
[Consulta] Matriz triangular inferior y superior en C++
Programación C/C++
romybe 1 9,559 Último mensaje 20 Julio 2015, 21:21 pm
por romybe
matriz triangular superior
Programación C/C++
openclasroom 1 2,983 Último mensaje 24 Octubre 2017, 16:07 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines