manipulación de un objeto multidimensional

Iniciado por david_BS, 3 Abril 2012, 03:49 AM

0 Miembros y 1 Visitante están viendo este tema.

david_BS

Un ejemplo que muestra varias cosas, uso de punteros, manipulación de un objeto multidimensional, uso de static en el objeto, y lo que sea, que puede ayudar a iniciados en el lenguaje C/C++. Como siempre, trato de loguear cierta información que permita saber el comportamiento del programa.


//////////////////////////////////////////////////////////////////

//
// UTN FRGP
// 2012
// david_BS
// EMAIL: david_bs@live.com
//

//////////////////////////////////////////////////

#include <windows.h>
#include <stdio.h>


struct somestruct{

 int index;
};

#define MAX 8

typedef float tMatrix[MAX][3][4];

float**** Inicializar( void ){

static float mmf[8][3][4];// para que no cambie de dirección

// inicializamos el objeto tridimensional
for(int i=0; i<8; i++)
for(int j=0; j<3; j++){

for(int k=0; k<4; k++){

switch(i){
case 0: {

switch(j){

case 0: {

switch(k){
case 0: {mmf[i][j][k]=0.02f;break;}
case 1: {mmf[i][j][k]=0.022f;break;}
case 2: {mmf[i][j][k]=0.0222f;break;}
case 3: {mmf[i][j][k]=0.02222f;break;}
}

break;
}
case 1: {mmf[i][j][k]=0.03f;break;}
case 2: {mmf[i][j][k]=0.04f;break;}
}

break;
}

case 1: {mmf[i][j][k]=0.05f;break;}
case 2: {mmf[i][j][k]=0.7f;break;}
case 3: {mmf[i][j][k]=99;break;}
case 4: {mmf[i][j][k]=0.11f;break;}
case 5: {mmf[i][j][k]=88;break;}
case 6: {mmf[i][j][k]=33;break;}
case 7: {mmf[i][j][k]=100;break;}
}
}
}

return (float****)&mmf;// retornamos la dirección del objeto
}

void Mostrar (float m[3][4]){

for(int i=0; i<3; i++)
for(int j=0; j<4; j++)
printf("%f\n",m[i][j]);
}

int main(){


// pB va a ser un puntero a un objeto de 3 dimensiones
tMatrix *pB = ( tMatrix* )Inicializar( );

struct somestruct vS[8];
vS[0].index=0;
vS[1].index=1;
vS[2].index=2;
vS[3].index=3;
vS[4].index=4;
vS[5].index=5;
vS[6].index=6;
vS[7].index=7;

struct somestruct* pS;

pS=vS;

Mostrar((*pB)[pS[0].index]);// dentro de pB hay una matriz de 3x4


system("pause");
return 0;
}



Proyecto MSVC++ 6.0

3MP3R0R

Muchas gracias por esta colaboracion, me encanta, porque estoy empezando y resolviste algunas dudas sin que las proponga ;-) Estare chequeando mas a fondo este código, una vez mas gracias...

david_BS