Respuestas
Respuesta:
Sí
Explicación:
#include<stdio.h>
#include<math.h>
// Declaraciones adelantadas de las funciones
void pruebacla(int *ng, int *tseg);
void etapafinal(int vg1, int dif1, int vg2, int dif2, int vg3, int dif3);
void tiemporenhms(int dato, int *h, int *m, int *s);
int tiempoenseg(int vh, int vm, int vs);
int ajuste(int dvg1, int ddif1, int dvg2, int ddif2, int dvg3, int ddif3, int corr, int tsegcorr);
void pruebacla(int *ng, int *tseg) {
int cantcor;
int giros;
int indcor;
int minigiros;
int nrocor;
float porcgiros;
int selec;
int thcor;
int tmcor;
int tprimero;
int tscor;
int tsegundo;
selec = 0;
printf("Ingresar la cantidad de corredores\n");
scanf("%i",&cantcor);
for (indcor=1;indcor<=cantcor;indcor+=1) {
printf("Ingresar el numero de corredor\n");
scanf("%i",&nrocor);
printf("Ingresar los giros del corredor\n");
scanf("%i",&giros);
printf("Ingresar las horas que usó el corredor\n");
scanf("%i",&thcor);
printf("Ingresar los minutos que usó el corredor\n");
scanf("%i",&tmcor);
printf("Ingresar los segundos que usó el corredor\n");
scanf("%i",&tscor);
if (indcor==1) {
tprimero = tiempoenseg(thcor,tmcor,tscor);
ng = nrocor;
minigiros = giros-2;
} else {
/* es el segundo */
if (indcor==2) {
if ((thcor+tmcor+tscor)>0) {
tsegundo = tiempoenseg(thcor,tmcor,tscor);
tseg = tsegundo-tprimero;
} else {
/* diferencia nula por no terminar el segundo */
tseg = 0;
}
}
}
if ((thcor+tmcor+tscor)>0 && (giros>minigiros)) {
selec = selec+1;
}
}
porcgiros = selec*100/cantcor;
printf("Gano el corredor %i utilizando un tiempo de %i segundos y con una difrencia sobre el segundo clasificado de %i segundos\n",ng,tprimero,tseg);
printf("El porcentaje de corredores que finalizaron la pruena dentro de los ds giros %f\n",porcgiros);
}
void etapafinal(int vg1, int dif1, int vg2, int dif2, int vg3, int dif3) {
int cantcor;
int cor1;
int cor2;
int cor3;
int gana;
int giros;
int giros1;
int giros2;
int giros3;
int girosgana;
int indcor;
int nrocor;
int seg1;
int seg2;
int seg3;
int seggana;
int selec;
int thcor;
int tmcor;
int tscor;
printf("Ingresar la cantidad de corredores\n");
scanf("%i",&cantcor);
selec = 0;
for (indcor=1;indcor<=cantcor;indcor+=1) {
printf("Ingresar el numero de corredor\n");
scanf("%i",&nrocor);
printf("Ingresar los giros del corredor\n");
scanf("%i",&giros);
printf("Ingresar las horas que usó el corredor\n");
scanf("%i",&thcor);
printf("Ingresar los minutos que usó el corredor\n");
scanf("%i",&tmcor);
printf("Ingresar los segundos que usó el corredor\n");
scanf("%i",&tscor);
if (indcor<=3) {
switch (indcor) {
case 1:
cor1 = nrocor;
giros1 = giros;
seg1 = tiempoenseg(thcor,tmcor,tscor);
seg1 = ajuste(vg1,dif1,vg2,dif2,vg3,dif3,cor1,seg1);
break;
case 2:
cor2 = nrocor;
giros2 = giros;
seg2 = tiempoenseg(thcor,tmcor,tscor);
seg2 = ajuste(vg1,dif1,vg2,dif2,vg3,dif3,cor2,seg2);
break;
case 3:
cor3 = nrocor;
giros3 = giros;
seg3 = tiempoenseg(thcor,tmcor,tscor);
seg3 = ajuste(vg1,dif1,vg2,dif2,vg3,dif3,cor3,seg3);
break;
}
}
if ((thcor+tmcor+tscor>0)) {
selec = selec+1;
}
}
gana = cor1;
seggana = seg1;
girosgana = giros1;
if (seg2<seggana) {
if (seg2<seg3) {
gana = cor2;
girosgana = giros2;
seggana = seg2;
} else {
gana = cor3;
girosgana = giros3;
seggana = seg3;
}
} else {
if (seg3<seggana) {
gana = cor3;
girosgana = giros3;
seggana = seg3;
}
}
tiemporenhms(seggana,thcor,tmcor,tscor);
printf("El ganador final fue el corredor %i\n",gana);
printf(" en %i horas %i minuros %i segundos \n",thcor,tmcor,tscor);
printf(" y %i giros\n",girosgana);
printf("Terminaro la etapa final %i corredores\n",selec);
}
void tiemporenhms(int dato, int *h, int *m, int *s) {
double h1;
double m1;
double s1;
h1 = trunc(dato/3600);
h=(int)h1;
dato = dato - h1 * 3600;
m1 = trunc(dato/60);
m=(int)m1;
s1 = dato - m1 * 60;
s=(int)s1;
}
int tiempoenseg(int vh, int vm, int vs) {
int ts;
ts = vh*3600+vm*60+vs;
return ts;
}
int ajuste(int dvg1, int ddif1, int dvg2, int ddif2, int dvg3, int ddif3, int corr, int tsegcorr) {
int aj;
int diferencia;
if (corr == dvg1) {
diferencia = ddif1;
}
if (corr == dvg2) {
diferencia = ddif2;
}
if (corr == dvg3) {
diferencia = ddif3;
}
aj = tsegcorr-diferencia;
return aj;
}
int main() {
int difseg1;
int difseg2;
int difseg3;
int ng1=1;
int ng2=2;
int ng3=3;
printf("Etapa clasificatoria 1\n");
pruebacla(ng1,difseg1);
printf("Etapa clasificatoria 2\n");
pruebacla(ng2,difseg2);
printf("Etapa clasificatoria 3\n");
pruebacla(ng3,difseg3);
printf("Etapa Final\n");
etapafinal(ng1,difseg1,ng2,difseg2,ng3,difseg3);
return 0;
}