Autor
|
Tema: Suma triangulo superior matriz (Leído 13,075 veces)
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
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: #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
Mensajes: 823
|
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: 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: for(i=0; i<t; i++) for(j=i+1; j<t; j++)
|
|
|
En línea
|
|
|
|
Constantinoplero
Desconectado
Mensajes: 346
Veni, vidi, vici
|
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
Mensajes: 35
|
La verdad es que no le veo el grado de dificultad. Esto es lo que hace toda la tarea. for(i=0; i<t; i++) for(j=0; j<t; j++) if ( j > i ) x += v[i][j];
Acá dejo el code completo#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?: " ); } 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 M[%u][%u]: ", (i + 1), (j + 1) ); scanf ( "%u", &v [i ][j ] ); } } for (i = 0; i < t; i++) { for (j = 0; j < t; j++) } } 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 pm por bdoX »
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
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
Mensajes: 346
Veni, vidi, vici
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
matriz en c++ triangulo
Programación C/C++
|
yeimival
|
2
|
4,178
|
11 Mayo 2012, 06:07 am
por yeimival
|
|
|
Matriz Triangular Superior
Programación C/C++
|
m@o_614
|
9
|
25,923
|
30 Junio 2013, 19:28 pm
por m@o_614
|
|
|
Suma de matriz + matriz invertida
Programación C/C++
|
sora_ori
|
3
|
3,323
|
16 Enero 2014, 16:35 pm
por leosansan
|
|
|
[Consulta] Matriz triangular inferior y superior en C++
Programación C/C++
|
romybe
|
1
|
9,521
|
20 Julio 2015, 21:21 pm
por romybe
|
|
|
matriz triangular superior
Programación C/C++
|
openclasroom
|
1
|
2,949
|
24 Octubre 2017, 16:07 pm
por engel lex
|
|