Solução: Problema do professor de terceiro ano (Márcio Trindade)

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
#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;
}