Solução: Problema do professor de terceiro ano (Márcio Trindade)
From AdonaiMedrado.Pro.Br
Revision as of 00:53, 8 June 2009 by 201.50.34.177 (Talk)
#include<stdio.h> #include <stdlib.h> #include<string.h> int main(void) { struct estudante { char nome[51]; int resp; int nota; }; int comparar(const void *a, const void *b) { return (*(struct estudante *)a).nota-(*(struct estudante *)b).nota; } struct estudante aluno[100], troca; int i,j, gab, n, bin1,quantm=0,minipont=0,maxpont=0, acum; float med=0; scanf("%d",&gab); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s",aluno[i].nome); scanf("%d",&(aluno[i].resp)); bin1 = gab & aluno[i].resp; acum=0; for(j=0;j<7;j++) acum += ((bin1>>j)&1); aluno[i].nota = acum; if(maxpont<acum) maxpont=acum; med+=acum; } qsort(aluno,n,sizeof(struct estudante),comparar); printf("%d ",aluno[0].nota); for(i=0;i<=n;i++) if(minipont==aluno[i].nota) printf("%s ", aluno[i].nome); printf("\n%d ", maxpont); for(i=0;i<=n;i++) if(aluno[i].nota==maxpont) {quantm+=1; printf("%s ",aluno[i].nome); }printf("\n%.1f", med/n); printf("\n\n"); system("PAUSE"); return 0; }