Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: BigMuff en 31 Julio 2018, 07:42 am



Título: Estructuras como argumento de funcion
Publicado por: BigMuff en 31 Julio 2018, 07:42 am
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.

Código
  1. #include<stdio.h>
  2. #define MAX_ATLETAS 10
  3.  
  4. typedef struct
  5. {
  6. char nombre[20];
  7. int ti;
  8. int tf;
  9. int tt;
  10. }atleta;
  11.  
  12. int validarNumero(int n);
  13. void ingresarAtletas(atleta competencia, int n);
  14. void ordenarAtletas(atleta competencia, int n);
  15.  
  16. int main(){
  17.    atleta competencia[MAX_ATLETAS];
  18.    int n;
  19.    printf("Competencia atletica\n");
  20.    printf("Ingrese el numero de atletas: ");
  21.    scanf("%d", &n);
  22.    if(validarNumero(n) == 'n'){
  23.        printf("Numero invalido!");
  24.        return -1;
  25.    }
  26.    ingresarAtletas(competencia, n);
  27.    ordenarAtletas(competencia, n);
  28.    //printf("Podio\n");
  29.    //imprimirAtletas(competencia, NUMERO_PODIO);
  30. }
  31. int validarNumero(int n){
  32. if(n>10){
  33. return 'n';
  34. }else{
  35. return 1;
  36. }
  37. }
  38. void ingresarAtletas(atleta competencia, int n){
  39. int i;
  40. for(i=0;i<n;i++){
  41. printf("Nombre[%d]:",i);
  42. scanf("%[^\n]%*c",&competencia.nombre[i]);
  43. printf("Tiempo inicial[%d]",i);
  44. scanf("%d",&competencia.ti[i]);
  45. printf("Tiempo final[%d]",i);
  46. scanf("%d",&competencia.tf[i]);
  47. }
  48.  
  49. }
  50. void ordenarAtletas(atleta competencia, int n){
  51. int t[],i,j,temp;
  52. for(i=0;i<n;i++){
  53. competencia.tt[i]=((competencia.tf[i])-(competencia.ti[i]);
  54. }
  55.  
  56. for(i=0;i<n;i++){
  57. t[i]=competencia.tt[i];
  58. }
  59.  
  60. for(i=0;i<(n-1);i++){
  61. for(j=(i+1),j<n,j++){
  62. if(t[i]>t[j]){
  63. temp=t[j];
  64. t[j]=t[i];
  65. t[i]=temp;
  66. }
  67. }
  68. }
  69.  
  70. printf("Podio\n");
  71. printf("Nombre\t T.inicial\t T.final\t T.final\n");
  72.  
  73.  
  74. }
  75.  


Título: Re: Estructuras como argumento de funcion
Publicado por: MAFUS en 31 Julio 2018, 13:18 pm
La función acepta un único altelta, en cambio tu le pasas un array entero.