Estructuras como argumento de funcion

Iniciado por BigMuff, 31 Julio 2018, 07:42 AM

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

BigMuff

Hola, gracias por entrar.
Tengo un problema, quiero utilizar una estructura en la funcion de ingresar atletas pero me dice que el tipo del argumento es invalido.


#include<stdio.h>
#define MAX_ATLETAS 10

typedef struct
{
char nombre[20];
int ti;
int tf;
int tt;
}atleta;

int validarNumero(int n);
void ingresarAtletas(atleta competencia, int n);
void ordenarAtletas(atleta competencia, int n);

int main(){
    atleta competencia[MAX_ATLETAS];
    int n;
    printf("Competencia atletica\n");
    printf("Ingrese el numero de atletas: ");
    scanf("%d", &n);
    if(validarNumero(n) == 'n'){
        printf("Numero invalido!");
        return -1;
    }
    ingresarAtletas(competencia, n);
    ordenarAtletas(competencia, n);
    //printf("Podio\n");
    //imprimirAtletas(competencia, NUMERO_PODIO);
}
int validarNumero(int n){
if(n>10){
return 'n';
}else{
return 1;
}
}
void ingresarAtletas(atleta competencia, int n){
int i;
for(i=0;i<n;i++){
printf("Nombre[%d]:",i);
scanf("%[^\n]%*c",&competencia.nombre[i]);
printf("Tiempo inicial[%d]",i);
scanf("%d",&competencia.ti[i]);
printf("Tiempo final[%d]",i);
scanf("%d",&competencia.tf[i]);
}

}
void ordenarAtletas(atleta competencia, int n){
int t[],i,j,temp;
for(i=0;i<n;i++){
competencia.tt[i]=((competencia.tf[i])-(competencia.ti[i]);
}

for(i=0;i<n;i++){
t[i]=competencia.tt[i];
}

for(i=0;i<(n-1);i++){
for(j=(i+1),j<n,j++){
if(t[i]>t[j]){
temp=t[j];
t[j]=t[i];
t[i]=temp;
}
}
}

printf("Podio\n");
printf("Nombre\t T.inicial\t T.final\t T.final\n");


}

MAFUS

La función acepta un único altelta, en cambio tu le pasas un array entero.