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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Problema con matrices
« en: 4 Julio 2014, 21:21 pm »

Hola. No sé cual es el error en el siguiente código, ¿alguien podría ayudarme?

//Problema 1: Programa que cree una matriz nxn, ingrese datos y luego imprima la suma de los elementos de la diagonal principal

#include<iostream>
#include<cstdlib>

using namespace std;

void llenarymostrarM(int *matriz, int f, int c);
int sumadiagp(int *matriz, int f, int c);

int main()
{
    int *mat, fil, col;
    cout<<"El numero de filas es: ";
    cin>>fil;
    cout<<"El numero de columnas es: ";
    cin>>col;
    mat=new int[fil, col];
    llenarymostrarM(mat, fil, col);
    cout<<endl;
    cout<<"La suma de los elementos de la diagonal principal es: "      <<sumadiagp(mat, fil, col)<<endl;
    delete []mat;
    system("pause");
}

void llenarymostrarM(int *matriz, int f, int c){
     int i,j;
     cout<<"Ingrese los elementos de la matriz: ";
     for(i=0; i<f; i++){
              for(j=0; j<c; j++){                                         
                       cin>>matriz[i,j];
                       }
     }
     cout<<endl;
     cout<<"La matriz es: ";
     for(i=0; i<f; i++){
              for(j=0; j<c; j++){
                       cout<<matriz[i,j]<<endl;
                       }
     }
}                           

int sumadiagp(int *matriz, int f, int c){
      int i,j, sdp=0;
      for(i=0; i<f; i++){
              for(j=0; j<c; j++){
                       sdp=sdp+matriz[i,i];
                               }
              }
      return sdp;
}

Por ejemplo cuando pongo una matriz 2x2: 1, 2, 3, 4, me sale que la matriz es: 3 4 3 4 y la suma de la diagonal principal es 14  :huh:


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema con matrices
« Respuesta #1 en: 4 Julio 2014, 23:16 pm »

* Tienes errores en los punteros del array bidimensional, que han de ser **, tanto en su declaración como en los argumentos de las funciones.

* Se te ha ido la olla al hacer mat[ i , j ] en lugar de mat [ i ][ j ]

* Tienes mal declarado el array bidimensional con el operador new.

* Te falta el return de main.

Con esas correcciones o puntualizaciones, ya que el resto del código es el tuyo, y tabulando o indentando el código de forma más razonable -no escatimes con los espacios en blanco, si no queda todo apelotonado- una posible solución, según tienes planteado, sería:



EI: codigo suprimido.



Por cierto, si quieres la suma de la diagonal no olvides que fil = col. Y si han de ser iguales te puedes ahorrar un cin, tomando col = fil si la matriz ha de ser del tipo n x n.





« Última modificación: 5 Julio 2014, 01:07 am por Eternal Idol » En línea

Xammm

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: Problema con matrices
« Respuesta #2 en: 5 Julio 2014, 06:21 am »

Muchas gracias por la ayuda. Creo que este el código final además le agregue otro problema jeje.

#include<iostream>
#include<cstdlib>

using namespace std;

void llenarymostrarM(int **matriz, int o);
int mayor(int **matriz, int o);
int sumadiagp(int **matriz, int o);

int main()
{
    int **mat, orden;
    cout<<"El orden de la matriz es: ";
    cin>>orden;
    mat=new int*[orden];
    llenarymostrarM(mat, orden);
    cout<<endl;
    cout<<"El mayor elemento es: "<<mayor(mat, orden)<<endl;
    cout<<"La suma de los elementos de la diagonal principal es: "<<sumadiagp(mat, orden)<<endl;
    delete []mat;
    system("pause");
}

void llenarymostrarM(int **matriz, int o){
     int i,j;
     cout<<"Ingrese los elementos de la matriz: ";
     for(i=0; i<o; i++){
              for(j=0; j<o; j++){                                        
                       cin>>matriz[j];
                       }
     }
     cout<<endl;
     cout<<"La matriz es: ";
     for(i=0; i<o; i++){
              for(j=0; j<o; j++){
                       cout<<matriz[j]<<endl;
                       }
     }
}                            

int mayor(int **matriz, int o){
    int i,j, mayor=matriz[0][0];
    for(i=1; i<o; i++){
              for(j=0; j<o; j++){
                       if(matriz[j]>mayor){
                                      mayor=matriz[j];
                                      }
              }
    }
    return mayor;
}

int sumadiagp(int **matriz, int o){
      int i,j, sdp=0;
      for(i=0; i<o; i++){
              for(j=0; j<o; j++){
                       if(i==j)
                       sdp=sdp+matriz[j];
                               }
              }
      return sdp;
}

Con respecto al return 0, ¿es siempre obligatorio?, nunca lo he usado en otros códigos.  Donde dice matriz[j] en realidad debe ser matriz i[j], no sé porque se ve asi. Por último, cuando termino de ejecutar el programa sale que debe cerrarse  :huh:
« Última modificación: 5 Julio 2014, 06:24 am por CharterC+ » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema con matrices
« Respuesta #3 en: 5 Julio 2014, 07:00 am »

Muchas gracias por la ayuda. Creo que este el código final además le agregue otro problema jeje.
........................................................

Con respecto al return 0, ¿es siempre obligatorio?, nunca lo he usado en otros códigos.  Donde dice matriz[j] en realidad debe ser matriz i[j], no sé porque se ve asi. Por último, cuando termino de ejecutar el programa sale que debe cerrarse  :huh:

Respecto a lo último se debe a que [ i ] , sin los espacios en blanco que he puesto, es la secuencia de escape para las letras en cursivas. Por ello a partir del primer [ i ] que escribes la letra cambia a cursiva. Fíjate en el código de tu mensaje y lo veras. Para evitarlo usa las llamadas etiquetas GeSHi, en la parte superior de los iconos a la derecha, y en el desplegable que aparece elige las de C++ y en medio de las etiquetas "code" que aparecen pegas tu código.

Sí, el return es obligatorio porque por cuestiones del estándar del C/C++ main se debe declarar como una función de tipo int y estas han de retornar algo. Lo normal es que si no lo pones el programa te lance un warning de advertencia, al menos en el modo pedantic.
 
Y respecto al código sigues declarando mal el array. Como el mio lo han borrado te lo vuelvo a poner:

Código
  1. int **mat = new int*[orden];
  2.    for( int i = 0; i < orden; ++i )
  3.      mat[i] = new int[orden];

Y ya está.

También te aconsejo el uso de mensajes para introducir los valores, como:

Código
  1. cout <<"Ingrese los elementos de la matriz: "<< endl;
  2.  for( i = 0; i < f; i++ )
  3.    for( j = 0; j < c; j++ ){
  4.      cout << "matriz[" << i << "][" << j << "] = " ;
  5.      cin >> matriz[i][j];
  6.    }
  7.  cout << endl;

Y en la impresión que lo hagas como matriz:

Código
  1. cout << "La matriz es: " << endl;
  2.  for( i = 0; i <f ; i++){
  3.    for( j = 0; j < c; j++ )
  4.      cout << matriz[i][j] << "  ";
  5.    cout <<  endl;
  6.  }

Así te quedará todo mucho más claro.


,,,
. .
 |
\-/


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


« Última modificación: 5 Julio 2014, 07:05 am por leosansan » En línea

Xammm

Desconectado Desconectado

Mensajes: 4



Ver Perfil
Re: Problema con matrices
« Respuesta #4 en: 10 Julio 2014, 14:07 pm »

Muchas gracias por la ayuda, recién por cuestiones de tiempo he podido entrar.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
un problema de matrices
Programación Visual Basic
ZifuSka 3 1,891 Último mensaje 24 Octubre 2005, 05:35 am
por ZifuSka
Problema con matrices
Programación Visual Basic
nhaalclkiemr 6 2,246 Último mensaje 25 Agosto 2007, 22:04 pm
por CeLaYa
[c] Problema con matrices
Programación C/C++
Dacan 1 1,690 Último mensaje 5 Abril 2013, 03:53 am
por betokscr
Problema con Matrices en C
Programación C/C++
EASV95 2 1,847 Último mensaje 21 Abril 2015, 01:51 am
por EASV95
Problema con matrices y cadenas.
Programación C/C++
GustavoArango 4 2,316 Último mensaje 7 Mayo 2017, 18:49 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines