Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NicoSanhueza en 14 Junio 2018, 02:06 am



Título: Ayuda, Arreglo de estructuras
Publicado por: NicoSanhueza en 14 Junio 2018, 02:06 am
Buenas noches a todos, espero que esten bien.
Mi consulta es ¿ el numero de elementos que posea la estructura puede ser cualquiera o hay que definirlos? por ejemplo en vez de "{3,4.5}" colocar "{3,5,4.5}"

Lo otro, como puedo imprimir el numero 5 en el ultimo caso propuesto?



#include <stdio.h>
#include <stdio.h>
typedef struct beta
{
    int n;
    float d;
}dat;

double func(dat*);
typedef dat alfa[3];
double ff(alfa);

int main()
{

    dat gama[3]={{3,4.5},{6,7.0},{23,6.7}};
    printf("%.2lf\n",func(gama));//imprime 7.0
    printf("%.2lf\n",ff(gama));//imrpime 6.7
    return 0;
}

double func(dat* x)
{
    return x[1].d;// si es solo x[1] selecciona el conjunto 3,4; x[1].d selecciona el flotante de ese conjunto
}

double ff(alfa x)
{
    return x[2].d;
}


Gracias de antemano :)


Título: Re: Ayuda, Arreglo de estructuras
Publicado por: Beginner Web en 14 Junio 2018, 04:41 am
No se lo que hay que hacer xd

Código
  1. #include <stdio.h>
  2. typedef struct beta{ float n, m, d;}dat;
  3. typedef dat alfa[3];
  4. double func(dat* x){return x[0].m;}
  5. double ff(alfa x){return x[2].m;}
  6. int main()
  7. {
  8.    dat gama[3]={{3,5,4.5},{6,7.0},{23,6.7}};
  9.    printf("%.2lf\n",func(gama));//imprime 7.0
  10.    printf("%.2lf\n",ff(gama));//imrpime 6.7
  11.    return 0;
  12. }
  13.  


Título: Re: Ayuda, Arreglo de estructuras
Publicado por: MAFUS en 14 Junio 2018, 19:41 pm
Si quieres poner tres elementos en una estructura ésta debe tener al menos tres variables. No hay algo cómo estructuras dinámicas en C.

Si quieres una de tres elementos hay que declarar ese tipo.

Lo que si se pueden definir menos elementos de los que tiene la estructura, en ese caso C pone los no seleccionados a 0.

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4.    int a;
  5.    int b;
  6.    int c;
  7. } estructura;
  8.  
  9. void print(char *s, estructura t) {
  10.    printf("estructura %s:\n"
  11.           "t.a = %d\n"
  12.           "t.b = %d\n"
  13.           "t.c = %d\n\n", s, t.a, t.b, t.c);
  14. }
  15.  
  16. int main() {
  17.    // defino solo los elementos que me interesan
  18.    estructura m = {a: 1, c: 2};
  19.    // defino de los primeros elementos de forma secuencial
  20.    estructura n = {3, 4};
  21.    // defino todos los elementos
  22.    estructura o = {5, 6, 7};
  23.  
  24.    print("m", m);
  25.    print("n", n);
  26.    print("o", o);
  27. }

Salida:
estructura m:
t.a = 1
t.b = 0
t.c = 2

estructura n:
t.a = 3
t.b = 4
t.c = 0

estructura o:
t.a = 5
t.b = 6
t.c = 7