Saludos tengo este codigo de una matriz en C++:
///////////////////////////////////////////////////////Matriz A
cout <<"Matriz A" <<endl;
cout <<"Numero de Filas: "; cin >>a; /*Filas*/
cout <<"Numero de Columnas: "; cin >>b; /*Columnas*/
vector<vector<int> > MatA ( a, vector<int> ( b ) );
cout <<endl;
///////////////////////////////////////////////////////Valores Matriz A
int otro=0;
cout <<"Dame los valores de la Matriz A " <<a <<"x"<<b <<endl;
cout <<"(Con un enter por cada numero)"<<endl<<endl;
for ( int i = 0; i < a; i++ ) {posicion.Y= 3+i;
for ( int j = 0; j < b; j++ ){
color(14);
//Posicionando cursor
posicion.X= 3+otro;
SetConsoleCursorPosition(consola, posicion);
otro=otro+5;
//Captura Valor
cin >> valA;
//Inserta valor a matriz
MatA[i][j] = valA;
color(15);
}otro=0;}
system("cls");
Lo que yo quiero es crear la matriz llamandola desde una "function" como este codigo basico:
void matrizn(int **m,int f,int c){
//CARGANDO LA MATRIZ DINAMICA.
for(int i=0;i<f;i++)
for(int j=0;j<c;j++){
cout<<"Introduzca el elemento ["<<i+1<<"]["<<j+1<<"]= ";
cin>>m[i][j];}
}
pero lo que quiero es utilizar esta sintaxis:
vector<vector<int> > MatA ( a, vector<int> ( b ) );
para crear mi matriz, yo digo que todo el asunto esta en ese codigo, para que yo lo pueda hacer dinamico, pero busco y busco y no lo encuentro al igual que probe intentar hacerlo con el codigo mostrado y no me salio espero me puedan ayudar saludos.
Ya que has declarado tu matriz de esta forma: vector<vector<int> > MatA ( a, vector<int> ( b ) ); puedes hacer el acceso como si fuese una matriz normal y corriente, es decir, MatA[posicion][posicion2] y por tanto puedes hacer asignación a esa posición.
También podrías crearte un vector de vectores vacíos e ir llenandolo con las operaciones push_back().
Saludos.
Debes precisar que es exactamente lo que quieres hacer ya que comentas 'crear la matriz llamandola desde una "function"' mientras que en la funcion que mencionas la matriz ya ha sido creada y solo se piden sus valores.
En el primer caso donde se crea y piden los datos de la matriz:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <vector>
using std::vector;
vector<vector<int> > crear(int num_filas, int num_cols);
void imprimir(vector<vector<int> >& matriz);
int main()
{
cout << "Matriz A" << endl;
cout << "Numero de Filas: ";
int num_filas;
cin >> num_filas;
cout << "Numero de Columnas: ";
int num_cols;
cin >> num_cols;
cout << endl;
vector<vector<int> > matriz = crear(num_filas, num_cols);
cout << "----" << endl;
imprimir(matriz);
return 0;
}
vector<vector<int> > crear(int num_filas, int num_cols)
{
vector<vector<int> > matriz(num_filas, vector<int>(num_cols) );
for (int i = 0; i < num_filas; i++)
for (int j = 0; j < num_cols; j++) {
cout << "matriz[" << i << "][" << j << "]: ";
cin >> matriz[i][j];
}
return matriz;
}
void imprimir(vector<vector<int> >& matriz)
{
vector<vector<int> >::size_type i;
vector<int>::size_type j;
for (i = 0; i < matriz.size(); i++)
for (j = 0; j < matriz[i].size(); j++)
cout << "matriz[" << i << "][" << j << "]: " << matriz[i][j] << endl;
}
Un saludo
[quote author=rir3760 link=topic=337020.msg1655184#msg1655184 date=1314028988]
Debes precisar que es [b]exactamente[/b] lo que quieres hacer ya que comentas 'crear la matriz llamandola desde una "function"' mientras que en la funcion que mencionas la matriz ya ha sido creada y solo se piden sus valores.
while (opc!=6) {
cout <<"Menu" <<endl;
cout <<"1. Nueva Matriz A" <<endl; ///Listo
cout <<"2. Nueva Matriz B " <<endl; ///Listo
cout <<"3. Suma matrices" <<endl; ///Listo
cout <<"4. Multiplica matrices" <<endl;
cout <<"5. Obtener Matriz transpuesta" <<endl;
cout <<"6. Finalizar programa" <<endl;
cout <<"Opcion (Numero): "; cin >>opc;
switch (opc){
///////////////////////////////////////////////////////Matriz A
case 1: cout <<"Matriz A" <<endl;
cout <<"Numero de Filas: "; cin >>a; /*Filas*/
cout <<"Numero de Columnas: "; cin >>b; /*Columnas*/
system("cls");
vector<vector<int> > MatA = crearMatA(a,b);
break;
///////////////////////////////////////////////////////Matriz B
case 2: cout <<"Matriz B"<<endl;
cout <<"Numero de Filas: "; cin >>c; /*Filas*/
cout <<"Numero de Columnas: "; cin >>d; /*Columnas*/
system("cls");
vector<vector<int> > MatB = crearMatB(c,d);
break;
Muchas gracias, pero ahora tengo otro problema...
En switch me sale el siguiente error:
Error: transfer of control bypasses initialization of:
Cuando intento llamar la funcion que me pasaste y que implemente en todo mi programa, antes de entrar a la opcion de acciones si captura los datos mi matriz y me salen bien mis operaciones, multiplicacion, transpuesta y suma...
Lo que quiero es poder crear nuevamente mi matriz y trabajar con ella intentando declararla dentro de mi Switch... pero me sale ese error?... de casualidad sabes que sucede?...
ante mano muchas gracias :)
OK. ¿Puedes publicar el codigo fuente completo del programa?
Un saludo
Cita de: rir3760 en 23 Agosto 2011, 00:14 AM
OK. ¿Puedes publicar el codigo fuente completo del programa?
Un saludo
podrias mejhor pasarme tu correo??... esque no lo quiero publicar :/