Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NecBalaam en 22 Agosto 2011, 14:42 pm



Título: Function(Crear Matriz) C++
Publicado por: NecBalaam en 22 Agosto 2011, 14:42 pm
Saludos tengo este codigo de una matriz en C++:

Código:
///////////////////////////////////////////////////////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:

Código:
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:

Código:
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.


Título: Re: Function(Crear Matriz) C++
Publicado por: Valkyr en 22 Agosto 2011, 15:25 pm
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.


Título: Re: Function(Crear Matriz) C++
Publicado por: rir3760 en 22 Agosto 2011, 18:03 pm
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:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <vector>
  7. using std::vector;
  8.  
  9. vector<vector<int> > crear(int num_filas, int num_cols);
  10. void imprimir(vector<vector<int> >& matriz);
  11.  
  12. int main()
  13. {
  14.   cout << "Matriz A" << endl;
  15.  
  16.   cout << "Numero de Filas: ";
  17.   int num_filas;
  18.   cin >> num_filas;
  19.  
  20.   cout << "Numero de Columnas: ";
  21.   int num_cols;
  22.   cin >> num_cols;
  23.   cout << endl;
  24.  
  25.   vector<vector<int> > matriz = crear(num_filas, num_cols);
  26.   cout << "----" << endl;
  27.   imprimir(matriz);
  28.  
  29.   return 0;
  30. }
  31.  
  32. vector<vector<int> > crear(int num_filas, int num_cols)
  33. {
  34.   vector<vector<int> > matriz(num_filas, vector<int>(num_cols) );
  35.  
  36.   for (int i = 0; i < num_filas; i++)
  37.      for (int j = 0; j < num_cols; j++) {
  38.         cout << "matriz[" << i << "][" << j << "]: ";
  39.         cin >> matriz[i][j];
  40.      }
  41.  
  42.   return matriz;
  43. }
  44.  
  45. void imprimir(vector<vector<int> >& matriz)
  46. {
  47.   vector<vector<int> >::size_type i;
  48.   vector<int>::size_type j;
  49.  
  50.   for (i = 0; i < matriz.size(); i++)
  51.      for (j = 0; j < matriz[i].size(); j++)
  52.         cout << "matriz[" << i << "][" << j << "]: " << matriz[i][j] << endl;
  53. }

Un saludo


Título: Re: Function(Crear Matriz) C++
Publicado por: NecBalaam en 22 Agosto 2011, 23:25 pm
Código:
[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 :)


Título: Re: Function(Crear Matriz) C++
Publicado por: rir3760 en 23 Agosto 2011, 00:14 am
OK. ¿Puedes publicar el codigo fuente completo del programa?

Un saludo


Título: Re: Function(Crear Matriz) C++
Publicado por: NecBalaam en 23 Agosto 2011, 04:57 am
OK. ¿Puedes publicar el codigo fuente completo del programa?

Un saludo

podrias mejhor pasarme tu correo??... esque no lo quiero publicar :/