Ayuda con función y struct, socorro

Iniciado por laurinhabig0, 8 Noviembre 2017, 19:11 PM

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

laurinhabig0

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:

#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;
    }

Gallu

Hola, yo haría lo siguiente, no lo he probado eso si, puede haber errores, échale un ojo


#include <stdio.h>

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

void introducirDatosCorredor(Corredor * runner){ //por favor usa nombres de variable y funciones más descriptivos, intenta mantener también una buen identación

printf("Introduce dorsal:\n");
scanf("%d\n",&(*runner->dorsal));

printf("Introduce nome:\n");
scanf("%s\n",&(*runner->nome));

for(int i=0;i<4;i++){
printf("Introduce 0 se houbo abandono:\n");
scanf("%d\n",&(*runner->abandonos[i]));
}

}

int main() {
    int i;
    int numcorr ;
    Corredor corredores[numcorr];

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

    for(i=0;i<numcorr;i++){
Corredor corredorAux;
introducirDatosCorredor(&corredorAux); 
        corredor[i]= corredorAux;
    }
}
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.