Difference between revisions of "Solução: Problema do professor de terceiro ano (Tito Gardel)"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
Line 49: Line 49:
 
 
 
     for (i=0; i<n; i++) {
 
     for (i=0; i<n; i++) {
         aluno[i].acertos = certas(aluno[i],g);   //VERIFICA A QUANTIDADE DE ACERTOS DE CADA ALUNO
+
         aluno[i].acertos = certas(aluno[i],g);
 
     }
 
     }
 
 
     qsort(aluno,n,sizeof(Aluno),comparar); //ORDENA EM ORDEM CRESCENTE DE ACERTOS
+
     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); //ORDENA EM ORDEM ALFABETICA
+
     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);     
     //system("pause");
+
     return 0;
  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;
}