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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas en ciclo for
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas en ciclo for  (Leído 2,091 veces)
CesarCort

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Problemas en ciclo for
« en: 7 Mayo 2014, 20:55 pm »

Buenas, antes de todo soy nuevo en el foro mi nombre es Cesar Enrique soy universitario y bueno ando llevando una curso de programación, estamos aún en el uso de ciclos for y ahora había que presentar un programa que luego de ingresar los datos de la matriz  imprima y sume las diagonales de una matriz cuadrada y sus filas, Esta matriz tiene que tener un orden mayor a 3, por lo que el usuario debe poder introducir el orden (m por m, m mayor que 3).
El problema está en la parte de comentarios, antes del primer for...Cuando compilo el programa sin esta parte todo va bien, ojo que m=3, pero cuando activo el código borro el m=3 claro está porque le pido al usuario que ingrese m pero al hacer esto y luego de ingresar todos los valores de la matriz al momento de imprimir lo único que me hace es imprimir los últimos 3 datos ingresados. cuestión que no entiendo que pasa y necesito ayuda, quizás este ignorando algo tan elemental pero en este momento no se me ocurre nada, agradezco de antemano la ayuda y las intenciones :)
PD: Uso de compilador Dev c++ 5.6.2




Código:
#include <iostream>
#include <conio.h>
#include <cstdlib>



using namespace std;
int main(int argc, char** argv) {


int m,i,j,Tabla[m][m];
int Sumfil=0,SumaD=0,SumaDinv=0;

cout<<"\t OBTENGA LA SUMA DE FILAS Y DIAGIONALES DE SU MATRIZ"<<endl;
cout<<endl;
///Eh aquí el problema, cuando activo está parte del codigo borro m=3 y solo declaro int m
/*
cout<<"Ingrese el orden de su matriz Cuadrada:";
cin>>m;
if(m<=2){
cout<<"Numero no Valido";}
else{}
Tabla[m][m];
*/
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){

cout<<"Ingresa Valor["<<i<<"]["<<j<<"]:";
cin>>Tabla[i][j];
}
        }

//For para mostrar la tabla
cout<<endl;
cout<<"SU MATRIZ ES:"<<endl<<endl;
for( i=1;i<=m;i++){
for(j=1;j<=m;j++){
cout<<Tabla[i][j]<<"\t";
        }
cout<<endl;
}
//Suma de filas
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++){
Sumfil+=Tabla[i][j];

}
cout<<"Suma de la fila("<<i<<"): "<<Sumfil<<endl;
Sumfil=0;
                }
//Suma de las diagonales

for(i=1;i<=m;i++)
{
for( j=1;j<=m;j++){
if(i=j){
SumaD+=Tabla[i][j];
}

}
}
cout<<"LA SUMA DE LA DIAGONAL ES : "<<SumaD<<endl;

//Suma de la diagonal inversa

for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++){

if(i!=m+1-j ){
Tabla[i][j];
}
else {SumaDinv+=Tabla[i][j];
}
}
}
cout<<"LA SUMA DE LA DIAGONAL INVERTIDA ES: "<<SumaDinv<<endl;

return 0;
}


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problemas en ciclo for
« Respuesta #1 en: 7 Mayo 2014, 21:21 pm »


Declaras Tabla antes de tiempo y en los for se va desde 0 a < m,  si no te pasas de la longitud del array.

Con esto funciona pero te dejo que arregles tu lo de las diagonales:

Código
  1. do{
  2.    cout<<"Ingrese el orden de su matriz Cuadrada:";
  3.    cin>>m;
  4.      if(m<3){
  5.    cout<<"Numero no Valido";}
  6.  }while (m<3);
  7.  int Tabla[m][m];
  8. for(i=0;i<m;i++){
  9. for(j=0;j<m;j++){
  10. cout<<"Ingresa Valor["<<i<<"]["<<j<<"]:";
  11. cin>>Tabla[i][j];
  12. }
  13.  }
  14.  
  15.  //For para mostrar la tabla
  16.  cout<<endl;
  17.  cout<<"SU MATRIZ ES:"<<endl<<endl;
  18.  for( i=0;i<m;i++){
  19.    for(j=0;j<m;j++){
  20.      cout<<Tabla[i][j]<<"\t";
  21.    }
  22.  cout<<endl;
  23. }
  24. //Suma de filas
  25. for(i=0;i<m;i++) {
  26. for(j=0;j<m;j++)
  27. Sumfil+=Tabla[i][j];
  28. cout<<"Suma de la fila("<<i<<"): "<<Sumfil<<endl;
  29. Sumfil=0;
  30.  }
  31. //Suma de las diagonales

¡¡¡¡ Saluditos! ..... !!!!




En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Problemas en ciclo for
« Respuesta #2 en: 7 Mayo 2014, 21:57 pm »

Puedes calcular la suma de la primera diagonal de esta manera

Código
  1. for( i = 0; i < m; i++ )
  2.    SumaD += Tabla[i][i];

No es necesario usar dos for, y con la segunda tambien

Código
  1. for( i = 0, j = m-1; i < m; i++, j-- )
  2.   SumaDinv += Tabla[i][j];

Saludos
En línea

CesarCort

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problemas en ciclo for
« Respuesta #3 en: 7 Mayo 2014, 22:05 pm »

Vaya era algo que ignoraba dado que recién estoy iniciando el curso... me sirvió mucho la ayuda y la sugerencia, Gracias  ;D .
Por cierto como hago para presentar el código con indices y colores en los mensajes del foro ?
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problemas en ciclo for
« Respuesta #4 en: 7 Mayo 2014, 22:43 pm »

............................
Por cierto como hago para presentar el código con indices y colores en los mensajes del foro ?

Elige en las etiquetas GeSHi las de C++.

¡¡¡¡ Saluditos! ..... !!!!


En línea

CesarCort

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problemas en ciclo for
« Respuesta #5 en: 8 Mayo 2014, 03:42 am »

Hombre gracias ! gracias por todo, encantado con mi primera experiencia en el foro. ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con un ciclo
Java
xAgramonx 3 3,245 Último mensaje 25 Noviembre 2010, 19:30 pm
por xAgramonx
Proyecto de fin de ciclo
Foro Libre
Khronos14 5 4,087 Último mensaje 31 Marzo 2011, 23:49 pm
por Jake Logan
Ciclo exacto
Programación C/C++
neeeko 1 2,599 Último mensaje 22 Febrero 2013, 04:59 am
por 85
ciclo for()
Programación C/C++
noah222 2 6,265 Último mensaje 18 Abril 2013, 15:23 pm
por rir3760
problemas con el ciclo
Programación C/C++
kyosatoishy 4 2,088 Último mensaje 5 Octubre 2016, 21:37 pm
por kyosatoishy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines