Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: CesarCort en 7 Mayo 2014, 20:55 pm



Título: Problemas en ciclo for
Publicado por: CesarCort 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;
}


Título: Re: Problemas en ciclo for
Publicado por: leosansan 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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Problemas en ciclo for
Publicado por: Blaster 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


Título: Re: Problemas en ciclo for
Publicado por: CesarCort 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 ?


Título: Re: Problemas en ciclo for
Publicado por: leosansan 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! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Problemas en ciclo for
Publicado por: CesarCort en 8 Mayo 2014, 03:42 am
Hombre gracias ! gracias por todo, encantado con mi primera experiencia en el foro. ;D