Difference between revisions of "Solução: Problema do professor de terceiro ano (Márcio Trindade)"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
<code lang="c">
 
<code lang="c">
 
#include<stdio.h>
 
#include<stdio.h>
+
#include <stdlib.h>
+
#include<string.h>
 +
 
 
int main(void)
 
int main(void)
 
{
 
{
struct student
+
struct estudante
{
+
{
char nome[51];
+
char nome[51];
int resp;
+
int resp;
int nota;
+
int nota;
};
+
};
+
int comparar(const void *a, const void *b)
struct student aluno[100], troca;
+
{
int i,j, gab, n, bin1, acum;
+
return (*(struct estudante *)a).nota-(*(struct estudante *)b).nota;
float med=0;
+
}
+
struct estudante aluno[100], troca;
scanf("%d",&gab);
+
int i,j, gab, n, bin1,quantm=0,minipont=0,maxpont=0, acum;
scanf("%d",&n);
+
float med=0;
for(i=0;i<n;i++)
+
scanf("%d",&gab);
{
+
scanf("%d",&n);
scanf("%s",aluno[i].nome);
+
for(i=0;i<n;i++)
scanf("%d",&(aluno[i].resp));
+
{
bin1 = gab&aluno[i].resp;
+
scanf("%s",aluno[i].nome);
acum=0;
+
scanf("%d",&(aluno[i].resp));
for(j=0;j<7;j++)
+
bin1 = gab & aluno[i].resp;
acum += ((bin1>>j)&1);
+
acum=0;
aluno[i].nota = acum;
+
for(j=0;j<7;j++)
med+=acum;
+
acum += ((bin1>>j)&1);
}
+
aluno[i].nota = acum;
+
if(maxpont<acum)
for(i=0;i<n;i++)
+
maxpont=acum;
{
+
med+=acum;
for(j=i+1;j<n;j++)
+
}
{
+
qsort(aluno,n,sizeof(struct estudante),comparar);
if(aluno[i].nota>aluno[j].nota)
+
printf("%d ",aluno[0].nota);
{
+
for(i=0;i<=n;i++)
troca=aluno[i];
+
if(minipont==aluno[i].nota)
aluno[i]=aluno[j];
+
printf("%s ", aluno[i].nome);
aluno[j]=troca;
+
printf("\n%d ", maxpont);  
}
+
for(i=0;i<=n;i++)
}
+
if(aluno[i].nota==maxpont)
}
+
{quantm+=1;
+
printf("%s ",aluno[i].nome);
printf("\n%d", aluno[i].nota);
+
}printf("\n%.1f", med/n);
for(j=i;j>=0;j--)
+
printf("\n\n");
if(aluno[i].nota==aluno[i].nota)
+
system("PAUSE");
printf("\t%s",aluno[j].nome);
+
+
printf("\n%d", aluno[0].nota);
+
for(j=0;j<n;j++)
+
+
+
if(aluno[j].nota==aluno[0].nota)
+
printf("\t%s",aluno[j].nome);
+
+
 
return 0;
 
return 0;
 
}
 
}
 
 
 
</code>
 
</code>

Latest revision as of 00:56, 8 June 2009

#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;
}