Título: Array bidimensional y uni. ¿Por qué el arreglo d[i] no se imprime en pantalla???
Publicado por: mikem en 18 Octubre 2014, 20:17 pm
#include <iostream> #include <iomanip> #include <cstdlib> #include <stdio.h> using namespace std; const int TAM=10;
//Prototipos de funciones: void Leer(int a [TAM][TAM],int n); void Imprimir (int a[TAM][TAM], int n);
void Diag (int a [TAM][TAM], int n, int d[TAM]); void Printdiag (int d[TAM], int n);
int main () { int n; int i,j; int a[TAM][TAM]; int d[TAM];
do {
cout<<"Ingrese tam. de la matriz, por favor: \n"; cin >>n;
} while (n<1 || n>TAM); if (n<1 || n>TAM) { cout<<"Invalido. \n"; } //Llamada de funciones: Leer (a,n); Imprimir (a,n); system ("PAUSE"); system ("cls"); Diag (a,n,d); Printdiag (d,n); } void Leer (int a [TAM][TAM], int n) { cout<<"Ingrese datos a la matriz: \n \n"; int i,j; for (i=0; i<n; i++) for (j=0; j<n; j++) { cin >>a[i][j]; } } void Imprimir (int a [TAM][TAM], int n) { cout<<"La matriz ingresada es: \n"; for(int i=0; i<n; i++) for (int j=0; j<n; j++) cout <<setw(3)<<a[i][j]<<"\n\n"; } void Diag (int a[TAM][TAM], int n, int d[TAM]) { cout<<"Te voy a dar la diagonal principal: \n\n"; for (int i=0; i<n; i++) for (int j=0; j<n; j++) d[i]==a[i][j]; }
void Printdiag (int d[TAM], int n) { //AQUÍ ESTÁ EL PROBLEMA: //¿por qué no imprime el vector d como corresponde? //Sale en pantalla todos números raros... for (int i=0; i<n; i++) cout<<d[i]; } ¿Qué cosa debería modificar? Saludos :D
Título: Re: Array bidimensional y uni. ¿Por qué el arreglo d[i] no se imprime en pantalla???
Publicado por: avesudra en 18 Octubre 2014, 21:29 pm
Hola, creo que el problema está en que en el for cuando calculas la diagonal estás usando un operador de igualdad en lugar del de asignación, concretamente aquí: void Diag (int a[TAM][TAM], int n, int d[TAM]) { cout<<"Te voy a dar la diagonal principal: \n\n"; for (int i=0; i<n; i++) for (int j=0; j<n; j++) d[i]==a[i][j]; //<-- Aquí }
En efecto, ese es el fallo. Una cosa, cuando publiques código hazlo entre las etiquetas GeSHi para que te salga coloreado, y otra cosa la biblioteca stdio.h no es de C++ es de C, si quieres usar esas funciones tienes que incluir cstdio y no la que has puesto. Un saludo.
Título: Re: Array bidimensional y uni. ¿Por qué el arreglo d[i] no se imprime en pantalla???
Publicado por: rir3760 en 19 Octubre 2014, 03:54 am
¿Qué cosa debería modificar? Ademas (y respondiendo a tu otro tema sobre el mismo programa, deberías haber respondido en este) para obtener la diagonal principal solo necesitas de un bucle, la funcion "Diag" hay que cambiarla a: void Diag(int a[TAM][TAM], int n, int d[TAM]) { cout << "Te voy a dar la diagonal principal:" << endl; for (int i = 0; i < n; i++) d[i] = a[i][i]; }
Un saludo
|