Domingo 22 de Diciembre de 2024, 08:01
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
SUMA DIAGONAL
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: SUMA DIAGONAL (Leído 17971 veces)
eruelas
Miembro activo
Mensajes: 69
Nacionalidad:
SUMA DIAGONAL
«
en:
Domingo 14 de Septiembre de 2008, 19:15 »
0
BUENO PS TENGO UN PROBLEMILLA KON UNA MATRIZ HE HECHO TODO LO K NECESITO EXCEPTO SUMAR EN DIAGONAL KOMO LE PUEDO HACER PARA K SUME TODOS LOS NUMEROS EN DIAGONAL DE UNA MATRIZ DE MAXIMO 5*5 Y K ME MUESTRE LA SUMA?? LES AGREDECERIA SU AYUDA GRACIAS DE ANTEMANO
HE AKI EL CODIGO
Código: Text
/*Ruelas Olea Edgar Adan
Programacion Logica Estructurada II
Practica 2 Programa 2
630548 4øA*/
#include<conio.h>
#include<stdio.h>
void main()
{//inicio
int i,j,mat[5][5],reng,col;
clrscr();
do
{//do
gotoxy(5,5);
printf("Cuantos renglones y columnas son [maximo 5x5 y separados por un espacio]: ");
scanf("%d %d",&reng,&col);
if(reng!=col)
{//if
gotoxy(6,8);
printf("ERROR: La matriz no tiene el mismo numero de renglones y columnas"); clreol();
getch();
gotoxy(6,8); clreol();
}//if
else if(reng>5)
{//if
gotoxy(6,8);
printf("ERROR: La matriz no debe ser mayor a 5x5"); clreol();
getch();
gotoxy(6,8); clreol();
}//if
}//do
while(reng!=col||reng>6);
printf("n");
for(i=0;i<reng;i++)
for(j=0;j<col;j++)
{//for
printf("Dame el numero en el %dø renglon %dø columna: ",i+1,j+1);
scanf("%d",&mat[i][j]);
}//for
for(i=0;i<reng;i++)
{//f1
for(j=0;j<col;j++)
{//f2
printf("t%dtt",mat[i][j]);
}//f2
printf("nn");
}//f1
printf("nnn");
getch();
}//fin
Tweet
Rombus
Miembro MUY activo
Mensajes: 105
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #1 en:
Domingo 14 de Septiembre de 2008, 20:15 »
0
sumar en diagonal te referis a sumar la diagonal principal o secundaria?
la diagonal principal es facil, sumas los valores cuando i = j;
y la diag secundaria es i = MAX - (j - 1) y j empieza en MAX--
saludos;)
eruelas
Miembro activo
Mensajes: 69
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #2 en:
Domingo 14 de Septiembre de 2008, 20:24 »
0
primero k nada gracias por ser el k kasi siempre me responde xD
y ps es la suma de la diagonal principal entonces tendria k declarar otra variabe y usar un for??? para k me vaya recorriendo la matriz?? o un if???
Rombus
Miembro MUY activo
Mensajes: 105
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #3 en:
Lunes 15 de Septiembre de 2008, 02:41 »
0
hey! no hay problema para eso estamos XD
claro, la onda seria que hagas un
Código: Text
for (i = 0; i<N;i++)
for(j=0;j <M; j++){
if(i==j)
aux += mat[i][j];
}
existen formas mas eficientes para hacerlo pero te respondo rapido antes de irme a comer JOJO, pero eso deberia andar
saludos!
eruelas
Miembro activo
Mensajes: 69
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #4 en:
Lunes 15 de Septiembre de 2008, 20:10 »
0
ps te dire k me lo suma mal me sale 64
pongo k la matriz sea de 2*2 y le doy 1234 k jijos me salio mal???
rfog
Miembro MUY activo
Mensajes: 166
Re: SUMA DIAGONAL
«
Respuesta #5 en:
Lunes 15 de Septiembre de 2008, 20:41 »
0
Supongo que habrás puesto a cero aux, porque en C++ las variables locales no se inicializan de forma automática...
y que controlas que M y N valgan el valor que has introducido por teclado y no estés sumando la matriz de 5x5 haya lo que haya en donde no has introducido números.
Microsoft Visual C++ MVP - Mi blog sobre programación:
http://geeks.ms/blogs/rfog
eruelas
Miembro activo
Mensajes: 69
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #6 en:
Lunes 15 de Septiembre de 2008, 20:46 »
0
ps ya inicialize las variables k tenia k inicializar a "0" y si le pongo k aux=0 el resultado da 0 no se en donde este el problema :s
Código: Text
/*Ruelas Olea Edgar Adan
Programacion Logica Estructurada II
Practica 2 Programa 2
630548 4øA*/
#include<conio.h>
#include<stdio.h>
void main()
{//inicio
int i,j,mat[5][5],reng,col,n,m,aux=0;
clrscr();
do
{//do
gotoxy(5,5);
printf("Cuantos renglones y columnas son [maximo 5x5 y separados por un espacio]: ");
scanf("%d %d",&reng,&col);
if(reng!=col)
{//if
gotoxy(6,8);
printf("ERROR: La matriz no tiene el mismo numero de renglones y columnas"); clreol();
getch();
gotoxy(6,8); clreol();
}//if
else if(reng>5)
{//if
gotoxy(6,8);
printf("ERROR: La matriz no debe ser mayor a 5x5"); clreol();
getch();
gotoxy(6,8); clreol();
}//if
}//do
while(reng!=col||reng>6);
printf("n");
for(i=0;i<reng;i++)
for(j=0;j<col;j++)
{//for
printf("Dame el numero en el %dø renglon %dø columna: ",i+1,j+1);
scanf("%d",&mat[i][j]);
}//for
for(i=0;i<reng;i++)
{//f1
for(j=0;j<col;j++)
{//f2
printf("t%dtt",mat[i][j]);
}//f2
printf("nn");
}//f1
printf("nnn");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(i==j)
aux+=mat[i][j];
}
printf("%i",aux);
getch();
}//fin
rfog
Miembro MUY activo
Mensajes: 166
Re: SUMA DIAGONAL
«
Respuesta #7 en:
Lunes 15 de Septiembre de 2008, 21:00 »
0
A ver, tienes al menos dos errores:
El primero está aquí:
while(reng!=col||reng>6);
Ahí no estás haciendo nada por el punto y coma final, que es lo que hará el while. Pero como reng es menor que 6, ni siquiera hace un bucle. Y tampoco sé para qué haces ese bucle, la verda.
El segundo es que, efectivamente, no inicializas ni n ni m, es decir, n y m valdrá lo que quiera que haya en la posición de memoria que representan.
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(i==j)
aux+=mat
[j];
}
Date cuenta que en lugar de n y m deberían estar col y reng, que son las variables que tomas del tamaño de la matriz, o bien deberías asignar m y n a col y reng o viceversa.
Microsoft Visual C++ MVP - Mi blog sobre programación:
http://geeks.ms/blogs/rfog
eruelas
Miembro activo
Mensajes: 69
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #8 en:
Lunes 15 de Septiembre de 2008, 21:05 »
0
ps lo de inicializar todas ya lo habia hecho solo tenia mal lo de akomodar la m y la n ya las kambie jeje muchas gracias por tu ayuda se te agradece!!! thnx
Rombus
Miembro MUY activo
Mensajes: 105
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #9 en:
Lunes 15 de Septiembre de 2008, 21:11 »
0
claro, yo puse M y N en mayuscula haciendo referencia a alguna constante simbolica declarada por ahi
la forma un poco mas eficiente que te decia es:
Código: Text
for(i=0; i<N; i++)
aux += mat[i][i];
habiendo antes declarado N, aux inicializada en 0, suponiendo una matriz cuadrada
eruelas
Miembro activo
Mensajes: 69
Nacionalidad:
Re: SUMA DIAGONAL
«
Respuesta #10 en:
Jueves 18 de Septiembre de 2008, 17:12 »
0
OK MUCHAS GRACIAS A LOS 2 JEJE SI ME FUNCIONO GRACIAS POR SU AYUDA SE LES AGRADECE
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
SUMA DIAGONAL