Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: laurinhabig0 en 8 Noviembre 2017, 19:11 pm



Título: Ayuda con función y struct, socorro
Publicado por: laurinhabig0 en 8 Noviembre 2017, 19:11 pm
Muy buenas!! Llevo dos días desesperado tratando de encontrar la solución a mi problema y no hay manera, a ver si podéis echarme una mano. Resulta que en un ejercicio que tengo que hacer para la uni me pide (además de muchas otras cosas, pero que se basean en este problema), lo siguiente: se trata de un programa para gestionar los tiempos de x ciclistas en una carrera blablabla... el "problema" radica en que me pide que almacene diversos datos de cada ciclista en un struct, a su vez contenido en un vector de structs. Pero me pide que lo haga con una función que se encuentre fuera del main. Mi duda es la siguiente, al crear esa función, como hago para indicarle que los datos que lea los almacene en el struct correspondiente a la posición que yo considere del vector de structs? No tengo mucha idea de como indicárselo entre los paréntesis (como veréis puse struct *infocorredor) pero fue fruto de horas de desesperación y 13213 horas de búsqueda por internet sin éxito) Disculpad si no utilizo un lenguaje muy técnico o digo alguna barbaridad pero estoy empezando en esto, no os paséis :-\

Os dejo por aquí el código, que evidentemente contiene errores, a ver si pilláis por donde van mis intenciones:

Código:
#include <stdio.h>

typedef struct infocorredor{
int dorsal;
char nome[20];
int abandonos[4];
};

void introducirdatos(struct *infocorredor){ //no me peguéis por lo que viene a partir de aquí
printf("Introduce dorsal:\n");
scanf("%d\n",&(*infocorredor.dorsal));
printf("Introduce nome:\n");
scanf("%s\n",&(*infocorredor.nome));
    for(int i=0;i<4;i++){
printf("Introduce 0 se houbo abandono:\n");
scanf("%d\n",&(*infocorredor.abandonos[i]));
    }
}

int main() {
    int i;
    int numcorr;
    infocorredor corredor[numcorr];

    printf("Introduce o número de corredores que participan:\n");
    scanf("%d\n",&numcorr);

    for(i=0;i<numcorr;i++){
introducirdatos(&infocorredor); //aquí una de mis dudas, como "introduzco" el struct en la función?
        corredor[i]=infocorredor;
    }


Título: Re: Ayuda con función y struct, socorro
Publicado por: Gallu en 10 Noviembre 2017, 12:39 pm
Hola, yo haría lo siguiente, no lo he probado eso si, puede haber errores, échale un ojo

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct{
  4. int dorsal;
  5. char nome[20];
  6. int abandonos[4];
  7. }Corredor;
  8.  
  9. void introducirDatosCorredor(Corredor * runner){ //por favor usa nombres de variable y funciones más descriptivos, intenta mantener también una buen identación
  10.  
  11. printf("Introduce dorsal:\n");
  12. scanf("%d\n",&(*runner->dorsal));
  13.  
  14. printf("Introduce nome:\n");
  15. scanf("%s\n",&(*runner->nome));
  16.  
  17. for(int i=0;i<4;i++){
  18. printf("Introduce 0 se houbo abandono:\n");
  19. scanf("%d\n",&(*runner->abandonos[i]));
  20. }
  21.  
  22. }
  23.  
  24. int main() {
  25.    int i;
  26.    int numcorr ;
  27.    Corredor corredores[numcorr];
  28.  
  29.    printf("Introduce o número de corredores que participan:\n");
  30.    scanf("%d\n",&numcorr);
  31.  
  32.    for(i=0;i<numcorr;i++){
  33. Corredor corredorAux;
  34. introducirDatosCorredor(&corredorAux);  
  35.        corredor[i]= corredorAux;
  36.    }
  37. }
  38.