Difference between revisions of "Solução: Problema do professor de terceiro ano (Tito Gardel)"
From AdonaiMedrado.Pro.Br
Line 49: | Line 49: | ||
for (i=0; i<n; i++) { | for (i=0; i<n; i++) { | ||
− | aluno[i].acertos = certas(aluno[i],g); | + | aluno[i].acertos = certas(aluno[i],g); |
} | } | ||
− | qsort(aluno,n,sizeof(Aluno),comparar); | + | qsort(aluno,n,sizeof(Aluno),comparar); |
− | + | ||
me=aluno[0].acertos; | me=aluno[0].acertos; | ||
ma=aluno[n-1].acertos; | ma=aluno[n-1].acertos; | ||
Line 60: | Line 59: | ||
qtacertos+=aluno[i].acertos; | qtacertos+=aluno[i].acertos; | ||
− | qsort(aluno,n,sizeof(Aluno),comparar2); | + | qsort(aluno,n,sizeof(Aluno),comparar2); |
printf("%d ", me); | printf("%d ", me); | ||
Line 79: | Line 78: | ||
media=(float)qtacertos/(float)n; | media=(float)qtacertos/(float)n; | ||
printf("\n%.1f\n", media); | printf("\n%.1f\n", media); | ||
− | + | return 0; | |
− | + | ||
} | } | ||
</code> | </code> |
Revision as of 17:01, 5 June 2009
#include <stdio.h> #include <stdlib.h> typedef struct Aluno{ char nome[51]; int resposta; int acertos; }Aluno; int certas(Aluno aluno, int g) { int i, cont=0, x; x = g & aluno.resposta; for(i=0; i<7;i++) { if (x & 1) cont++; x=x>>1; } return cont; } int comparar(const void *a, const void *b) { return (*(Aluno *)a).acertos - (*(Aluno *)b).acertos; } int comparar2(const void *a, const void *b) { return (*(Aluno *)a).nome - (*(Aluno *)b).nome; } int main (void) { //INICIO DA ENTRADA int g, n, i, aux=0, qtacertos=0, me, ma; float media; scanf("%d", &g); scanf("%d", &n); Aluno aluno[n]; for (i=0 ; i<n; i++) { scanf("%s", aluno[i].nome); scanf("%d" , &aluno[i].resposta); } //FIM DA ENTRADA for (i=0; i<n; i++) { aluno[i].acertos = certas(aluno[i],g); } qsort(aluno,n,sizeof(Aluno),comparar); me=aluno[0].acertos; ma=aluno[n-1].acertos; for(i=0;i<n;i++) qtacertos+=aluno[i].acertos; qsort(aluno,n,sizeof(Aluno),comparar2); printf("%d ", me); for (i=0; i<n; i++) { if (aluno[i].acertos==me) { printf("%s ", aluno[i].nome); aux++; } } printf("\n%d ", ma); for (i=0; i<n; i++) { if (aluno[i].acertos==ma) { printf("%s ", aluno[i].nome); aux++; } } media=(float)qtacertos/(float)n; printf("\n%.1f\n", media); return 0; }