Autor
|
Tema: Problema con matrices (Leído 2,655 veces)
|
Xammm
Desconectado
Mensajes: 4
|
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
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
* 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
Mensajes: 4
|
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
|
|
« Última modificación: 5 Julio 2014, 06:24 am por CharterC+ »
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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 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: int **mat = new int*[orden]; for( int i = 0; i < orden; ++i ) mat[i] = new int[orden];
Y ya está. También te aconsejo el uso de mensajes para introducir los valores, como: cout <<"Ingrese los elementos de la matriz: "<< endl; for( i = 0; i < f; i++ ) for( j = 0; j < c; j++ ){ cout << "matriz[" << i << "][" << j << "] = " ; cin >> matriz[i][j]; } cout << endl;
Y en la impresión que lo hagas como matriz: cout << "La matriz es: " << endl; for( i = 0; i <f ; i++){ for( j = 0; j < c; j++ ) cout << matriz[i][j] << " "; cout << endl; }
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
Mensajes: 4
|
Muchas gracias por la ayuda, recién por cuestiones de tiempo he podido entrar.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
un problema de matrices
Programación Visual Basic
|
ZifuSka
|
3
|
1,875
|
24 Octubre 2005, 05:35 am
por ZifuSka
|
|
|
Problema con matrices
Programación Visual Basic
|
nhaalclkiemr
|
6
|
2,235
|
25 Agosto 2007, 22:04 pm
por CeLaYa
|
|
|
[c] Problema con matrices
Programación C/C++
|
Dacan
|
1
|
1,665
|
5 Abril 2013, 03:53 am
por betokscr
|
|
|
Problema con Matrices en C
Programación C/C++
|
EASV95
|
2
|
1,815
|
21 Abril 2015, 01:51 am
por EASV95
|
|
|
Problema con matrices y cadenas.
Programación C/C++
|
GustavoArango
|
4
|
2,287
|
7 Mayo 2017, 18:49 pm
por engel lex
|
|