Cita:
Iniciado por dmorill .................................................. ........
Primero gracias a todos en especial a vangodp y leosansan por su atención y sus aportes, realmente es muy agradable que personas compartan sus grandes conocimientos :D
..........................................
De nada, es un placer compartir conocimientos con otros.
Aprovecho para ahondar en l idea sugerida por
Italico76 de obtener una matriz a partir de un vector unidimensional.
Para ello sólo hay que tener en cuenta que se compondrá de un número de elemetos igual a filas x columnas y su acceso será a partir de que [ i ][ j ] == [ i * columnas + j ]:
Código C++:
Ver originalEl numero de filas es: 4
El numero de columnas es: 8
La matriz es:
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
Presione una tecla para continuar . . .
Código C++:
Ver original#include<iostream>
#include<vector>
#include<cstdlib>
using namespace std;
void llenarMatriz( vector < int > &matriz, size_t filas, size_t columnas );
void imprimirMatriz( vector < int > matriz, size_t filas, size_t columnas );
int main(){
size_t fil , col ;
cout << "El numero de filas es: ";
cin >> fil;
cout << "El numero de columnas es: ";
cin >> col;
vector < int > mat ( fil * col ) ;
llenarMatriz( mat , fil , col );
cout << endl;
imprimirMatriz( mat , fil , col );
cout<<endl;
return 0;
}
void llenarMatriz( vector < int > &matriz, size_t filas, size_t columnas ){
///cout <<"Ingrese los elementos de la matriz \"Matriz\": "<< endl;
size_t k = 1;
for( size_t i = 0; i < filas; i++ )
for( size_t j = 0; j < columnas; j++, k++ ){
///cout << "matriz[" << i << "][" << j << "] = " ;
///cin >> matriz[ i * columnas + j ];
/// Si quieres entrar a mano desactiva lo que sigue y activa lo anterior
matriz[ i * columnas + j ] = k;
}
}
void imprimirMatriz( vector < int > matriz, size_t filas, size_t columnas ){
cout << "La matriz es: " << endl;
for( size_t i = 0; i < filas ; i++){
for( size_t j = 0; j < columnas; j++ )
cout.width(3),cout << matriz[ i * columnas + j ] << " ";
cout << endl;
}
}
Y observa la sutil diferencia con el siguiente en la declaración del vector y donde hago uso de push_back para introducir, y hacer que el vector crezca, los valores del vector:
Código C++:
Ver original#include<iostream>
#include<vector>
#include<cstdlib>
using namespace std;
void llenarMatriz( vector < int > &matriz, size_t filas, size_t columnas );
void imprimirMatriz( vector < int > matriz, size_t filas, size_t columnas );
int main(){
size_t fil , col ;
cout << "El numero de filas es: ";
cin >> fil;
cout << "El numero de columnas es: ";
cin >> col;
vector < int > mat ;
llenarMatriz( mat , fil , col );
cout << endl;
imprimirMatriz( mat , fil , col );
cout<<endl;
return 0;
}
void llenarMatriz( vector < int > &matriz, size_t filas, size_t columnas ){
cout <<"Ingrese los elementos de la matriz \"Matriz\": "<< endl;
size_t k = 1 , dato;
for( size_t i = 0; i < filas; i++ )
for( size_t j = 0; j < columnas; j++, k++ ){
///cout << "matriz[" << i << "][" << j << "] = " ;
///cin >> dato,matriz.push_back( dato );
/// Si quieres entrar a mano desactiva lo que sigue y activa lo anterior
matriz.push_back(k);
}
}
void imprimirMatriz( vector < int > matriz, size_t filas, size_t columnas ){
cout << "La matriz es: " << endl;
for( size_t i = 0; i < filas ; i++){
for( size_t j = 0; j < columnas; j++ )
cout.width(3),cout << matriz[ i * columnas + j ] << " ";
cout << endl;
}
}
También podría usar:
Código C++:
Ver originalvoid llenarMatriz( vector < int > &matriz, size_t filas, size_t columnas ){
///cout <<"Ingrese los elementos de la matriz \"Matriz\": "<< endl;
size_t k = 1 , dato;
for( size_t i = 0; i < filas * columnas; i++ ,k++ ){
///cout << "matriz[" << i / filas << "][" << i % filas << "] = " ;
///cin >> dato,matriz.push_back( dato );
/// Si quieres entrar a mano desactiva lo que sigue y activa lo anterior
matriz.push_back(k);
}
}