#include<iostream>
using namespace std;
int main()
{
int array[2][3];
int contador = 1;
int vector[6];
int **vector_apuntadores[6];
int *apuntador_arrays[2][3];
int contador_2=0;
//Arreglo bidimensional:
for (int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
array[i][j]= contador;
cout << "["<<array[i][j]<<"]";
contador++;
}
cout<<"\n";
}
cout << "\n\n";
//Paso del arreglo bidimensional a un vectorapuntador_arrays[i][j] por medio de doble indireccion:
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
apuntador_arrays[i][j]=&array[i][j]
; vector_apuntadores[contador_2] = &apuntador_arrays[i][j];
vector[contador_2] = **vector_apuntadores[contador_2];
cout << "["<<vector[contador_2]<<"]";
contador_2++;
}
cout<<"\n" ;
}
system ("pause");
return 0;
}
Cita de: JohnMcb en 3 Mayo 2013, 01:28 AMEsa 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:
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
pos = fila * columnas_x_fila + columna
La primera fila en las posiciones 0 .. 7
La segunda fila en las posiciones 8 .. 15
La tercera fila en las posiciones 16 .. 23
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
const int num_filas = 2;
const int num_cols = 3;
int main()
{
int aa[num_filas][num_cols];
int a[num_filas * num_cols];
//Array de arrays de ints
for (int i = 0; i < num_filas; i++)
for (int j = 0; j < num_cols; j++){
aa[i][j] = i * num_cols + j; // Para ejemplificarlo mejor
cout << "aa[" << i << "][" << j << "] == " << aa[i][j] << endl;
int pos = i * num_cols + j;
a[pos] = aa[i][j];
}
cout << endl;
// Array de ints
for (int i = 0; i < num_filas * num_cols; i++)
cout << "a[" << i << "] == " << a[i] << endl;
return 0;
}