elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Vector i*8+j
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Vector i*8+j  (Leído 1,779 veces)
JohnMcb

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Vector i*8+j
« en: 3 Mayo 2013, 01:28 am »

Buen día para todos.
Se me pidió convertir un array de varias dimensiones en un vector unidimensional de dos maneras, uno por medio de apuntadores con doble indireccion y la otra por medio de una formula ; i*8+j, la que aun no entiendo como aplicarla o usarla para pasar el array a vector, aquí está mi código con doble indireccion, alguno podria explicarme como funciona el pasar el arrary a vector con esa formula??? Gracias.
 
Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int array[2][3];
  8.    int contador = 1;
  9.    int vector[6];
  10.    int **vector_apuntadores[6];
  11.    int *apuntador_arrays[2][3];
  12.    int contador_2=0;
  13.    //Arreglo bidimensional:
  14.    for (int i=0;i<2;i++)
  15.    {
  16.        for(int j=0;j<3;j++)
  17.        {
  18.                array[i][j]= contador;
  19.                cout << "["<<array[i][j]<<"]";
  20.                contador++;
  21.  
  22.        }
  23.        cout<<"\n";
  24.    }
  25.    cout << "\n\n";
  26.  
  27.    //Paso del arreglo bidimensional a un vectorapuntador_arrays[i][j] por medio de doble indireccion:
  28.    for(int i=0;i<2;i++)
  29.    {
  30.                       for(int j=0;j<3;j++)
  31.  
  32.                       {
  33.                              apuntador_arrays[i][j]=&array[i][j]
  34. ;                             vector_apuntadores[contador_2] = &apuntador_arrays[i][j];
  35.                              vector[contador_2] = **vector_apuntadores[contador_2];
  36.                              cout <<  "["<<vector[contador_2]<<"]";
  37.                              contador_2++;
  38.                       }
  39.                       cout<<"\n" ;
  40.    }
  41.  
  42.  
  43.  
  44.  
  45.    system ("pause");
  46.    return 0;
  47.  
  48.  
  49. }


« Última modificación: 3 Mayo 2013, 01:30 am por JohnMcb » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Vector i*8+j
« Respuesta #1 en: 3 Mayo 2013, 17:56 pm »

Se me pidió convertir un array de varias dimensiones en un vector unidimensional de dos maneras, uno por medio de apuntadores con doble indireccion y la otra por medio de una formula ; i*8+j, la que aun no entiendo como aplicarla o usarla para pasar el array a vector
Esa formula solo es un ejemplo que te dieron, supongo yo, al usar una matriz con ocho columnas por fila. La expresión que debes utilizar es:
Código
  1. pos = fila * columnas_x_fila + columna

Y se debe a que, siguiendo el ejemplo de una matriz de 8x8, las filas de la matriz terminan en las posiciones del array de esta forma:
Código:
La primera fila en las posiciones  0 ..  7
La segunda fila en las posiciones  8 .. 15
La tercera fila en las posiciones 16 .. 23

Un programa de ejemplo basado en el tuyo:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. const int num_filas = 2;
  7. const int num_cols = 3;
  8. int main()
  9. {
  10.   int aa[num_filas][num_cols];
  11.   int a[num_filas * num_cols];
  12.  
  13.   //Array de arrays de ints
  14.   for (int i = 0; i < num_filas; i++)
  15.      for (int j = 0; j < num_cols; j++){
  16.         aa[i][j] = i * num_cols + j; // Para ejemplificarlo mejor
  17.         cout << "aa[" << i << "][" << j << "] == " << aa[i][j] << endl;
  18.  
  19.         int pos = i * num_cols + j;
  20.         a[pos] = aa[i][j];
  21.      }
  22.   cout << endl;
  23.  
  24.   // Array de ints
  25.   for (int i = 0; i < num_filas * num_cols; i++)
  26.      cout << "a[" << i << "] == " << a[i] << endl;
  27.  
  28.   return 0;
  29. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
vector < vector<int> > ?
Programación C/C++
bemone 3 2,748 Último mensaje 24 Agosto 2012, 05:50 am
por BlackZeroX
[C++] Uso de <vector> « 1 2 »
Programación C/C++
MeCraniDOS 12 6,229 Último mensaje 26 Junio 2013, 11:09 am
por MeCraniDOS
ejercicio de vector c++
Programación C/C++
eterno21 8 2,904 Último mensaje 7 Agosto 2013, 17:55 pm
por eterno21
[Consulta] Vector de objectos
Programación C/C++
bemone 1 1,840 Último mensaje 9 Agosto 2013, 08:19 am
por eferion
DUDA OCZ VECTOR
Hardware
Annubiis 7 4,211 Último mensaje 17 Septiembre 2013, 13:00 pm
por topomanuel
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines