Autor Tema: Inicializar vector con el contenido de otro vector ... ?  (Leído 3432 veces)

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

Desconectado richardjr

  • PIC12
  • **
  • Mensajes: 69
Inicializar vector con el contenido de otro vector ... ?
« en: 06 de Mayo de 2010, 06:10:19 »
Hola!! Les comento la duda que tengo... no se me habia planteado antes y la verdad es que estartia interesante saber como hacerlo.

El tema es el siguiente, tengo una estructura de datos, dentro de la cual, existe un array. Necesito inicializar esa estructura incluyendo el array, de una sola vez... respetando la forma en la que se definio la estructura.
Para mayor claridad, seria algo asi la cuestion:

struct estructura{                               //declaro la estructura.
                         char a;
                        char b;
                        char c[8];                     
;}

.
.
.
.
void main()
{
char val0,val1;
char vec[8]={1,2,3,4,5,6,7,8};              //variable con los datos que seran cargados en la estructura

struct estructura s1 = {val0,val1,vec1}; //->> Como se podria implementar esto para inicializar la estructura completa?
.
.
.
.
}


Obviamente, "struct estructura s1 = {val0,val1,vec1};" no funciona, es solo un bosquejo de lo que estoy buscando...

Alguna sugerencia?

Gracias por adelantado, y que tengan buen dia!!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Inicializar vector con el contenido de otro vector ... ?
« Respuesta #1 en: 06 de Mayo de 2010, 10:43:51 »
Si usas C normal debes crear una función constructora de la estructura.

Código: [Seleccionar]
char val0,val1;
char vec[8]={1,2,3,4,5,6,7,8};              //variable con los datos que seran cargados en la estructura

void InicializaEstructura(char *est)
{
char i;

*est=val0;
++est;
*est=val1;
++est;

for(i=0; i<8; ++i)
   {
   *est=vec[i];
   ++est;
   }
}

void main()
{
struct estructura s1;

InicializaEstructura(&s1);
}

Si usas C++ con un constructor y las variables char inicializadas es suficiente.

Desconectado richardjr

  • PIC12
  • **
  • Mensajes: 69
Re: Inicializar vector con el contenido de otro vector ... ?
« Respuesta #2 en: 06 de Mayo de 2010, 12:49:11 »
Hola migsantiago , excelente tu ayuda! Mil gracias! ya lo tengo andando ;) al final opte por la opcion para C...
Ahora bien, me quedo picando la duda de como seria si quisiera inicializar esa misma estructura pero desde una tabla, me explico mejor ;) :


truct estructura{                               //declaro la estructura.
                         char a;
                        char b;
                        char c[8];                     
;}

 char Dato[][8]={
        {0xff,0x5A,0x70,0x1F,0x55,0xAA,0x3d,0xC3},         //estos serian los valores q se va a cargar en cada una de las estructuras q se
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},         //definen mas abajo
        {0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00},             
        {0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00},     
         .
         .
         .
         .
         .
         .
        };

struct estructura valores[] = {                       //Creo una cierta cantidad de estructuras usando esta notacion por conveniencia (ya q son realmente muchas!)
        {0x100     , 0x0|1        , Dato[0]  },   
        {0x000     , 0x0|2        , Dato[1]  }, 
        {0x000     , 0x0|3        , Dato[2]  },       //caigo de vuelta en lo mismo de antes? o es valido esto?
        {0x000     , 0x0|4        , Dato[3]  }, 
        {0x000     , 0x0|5        , Dato[4]  },
        {0x000     , 0x0|6        , Dato[5]  }, 
        {0x000     , 0x0|7        , Dato[6]  }, 
        {0x000     , 0x0|8        , Dato[7]  }, 
         .
         .
         .
         .
         .
        };

la diferencia es q esta vez no se carga desde variables si no de valores predefinidos en formato de tabla...

Nuevamente gracias por la ayuda!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Inicializar vector con el contenido de otro vector ... ?
« Respuesta #3 en: 06 de Mayo de 2010, 13:16:35 »
Pues nadamás usa una variable que apunte al interior de una tabla. Debes sustituir vec[ i ] en la función constructora.


 

anything