Preparando los sorteos.
Hoy termina la fase de concurso. En los proximos dias se resolveran las reclamaciones y se asignaran numeros para el sorteo. La forma de asignar numeros sera el siguiente programita. Una vez ejecutado, comunicaremos publicamente y personalmente los numeros asignados para cada sorteo. Todo esto se anunciara en la web corporativa, aqui lo que os pongo es el codigo de reparto para que os hagais a la idea y aviseis si veis algun fallo Una salvedad: los comentarios dicen "crédito" pero como caracter general, como podrian ser "derechos", "votos", o en este caso horas y minutos de cpu.
#include
#include
// Se aplica la ley D’Hont para repartir NB boletos entre NP participantes
// atendiendo al número de créditos nc[].
// Se consideran todos lo cocientes nc[i]/n, con n natural, y se van asignando
// créditos por orden de cociente decreciente. En caso de cocientes iguales
// se da prioridad al que tiene un número de créditos mayor, y si hubiera
// coincidencia al que esté primero en lista.
#define NB 100000 // número de boletos
#define NP 10 // número de participantes
int nc[NP]; // número de créditos de cada participante
int nb[NP]; // número de boletos para cada participante
int main(void)
{
int i,j,jmax,sum;
double r,rmax;
FILE *Finput;
if ((Finput=fopen("lista.txt","rt"))==NULL){
printf("No existe lista.txtn");
exit(1);
}
for (i=0;i
if (fscanf(Finput,"%d",&nc[i])!=1){
printf("Sólo hay %d números en la lista de créditosn",i);
exit(1);
}
nb[i]=0;
}
for (i=1;i<=NB;i++){
rmax=0;
jmax=0;
for (j=0;j
r=nc[j]/(nb[j]+1.);
if (r>rmax || (r==rmax && (nc[j]>nc[jmax]))) {
rmax=r;
jmax=j;
}
}
nb[jmax]++;
#if (NB<=10) // para debug
printf("%2d %f=%d/%dn",jmax,rmax,nc[jmax],nb[jmax]);
#endif
}
sum=0;
printf("Participante créditos boletos rangon");
for (j=0;j
if (nb[j])
printf("%6d %13d %8d %04d-%04dn",
j+1,nc[j],nb[j],sum,sum+nb[j]-1);
sum+=nb[j];
}
return 0;
}
9 comentarios
Alejandro Rivero -
At the end of the contest, top ten participans of the list will be selected and will participate in the drawing of the laptop. The drawing will be proportional to the the valid credits accumulated in the period of time of the contest.
(y lo mismo en castellano)
Me temo que al poner el parrafito en este post diciendo que la ley de hont se puede aplicar a cualquier credito generico, votos, tiempo etc hemos inducido al error. Ya lo estamos corrigiendo. Mas explicacion en el siguiente post.
Cazamarcianos -
En el premio de HP se ha asignado los ticket proporcional al tiempo de CPU y no a los creditos como poneis en las bases del concurso o por lo menos yo lo interprete asi.
Un saludo
Jose
Cazamarcianos -
Una duda fuera del tema del concuso.
He detectado que hay varios ordenadores que entre los dias 25 y 29 han generado una cantidad muy grande de puntos que no cuadran con el potencia de dichas maquinas.
Todas han procesado miles de tareas de neurosim cada una en 2 minutos.
He puesto un pos en el foro de Canal@boinc con los detalles.
http://www.canalboinc.com/modules/newbb/viewtopic.php?topic_id=1359&forum=198&post_id=13064#forumpost13064
Si podeis investigarlo, gracias y un saludo.
Jose
jotaerre -
Recordad, además, que una persona sólo puede optar a un premio, en caso de estar primero en varias clasificaciones, se elige un premio, y se dejan los demás para el siguiente de la clasificación. Podéis mirarlo en las bases.
chemaris -
En mi opinión los usuarios que han sido penalizados reiteradamente, por ejemplo mas de 5 veces deberían ser descalificados o recibir una penalizacion mas severa
Molondro -
Álvaro -
¡¡Qué gente!! Se deben de creer muy listos por hacer trampas, como si los demás no supieramos hacerlas.
Teledhil -
Teledhil -
Y aunque igual es cosa de mi navegador, no veo "n" en los printf, solo veo "n"
:P