Created
May 5, 2015 18:48
-
-
Save rogerioagjr/7e6166dce78a33b86f9c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> // scanf e printf | |
#include <algorithm> // sort | |
#include <cstring> // strcmp | |
// defino os limites de n e do tamanho da string | |
#define MAXN 100100 | |
#define MAXL 30 | |
using namespace std; // algorithm | |
struct aluno{ // declaro a struct aluno | |
// e declaro seus dois membros: | |
char nome[30]; // o vetor de char "nome", de 30 posições | |
double nota; // e a double "nota" | |
}; | |
int n; // declaro o inteiro n | |
aluno classe[MAXN]; // declaro o vetor de alunos | |
bool compara(aluno x, aluno y){ // declaro a bool compara, que recebe dois alunos | |
if(x.nota>y.nota) return true; // se a nota do primeiro for maior estão em ordem | |
if(y.nota>x.nota) return false; // se a nota do segundo for maior, não estão em ordem | |
// se o programa chegar nessa linha, então as notas são iguais, então olho para os nomes | |
if(strcmp(x.nome, y.nome)<0) return true; // se o nome do prieiro vier antes, estão em ordem | |
//se o programa chegar nessa linha, então o nome do primeiro não vem antes | |
return false; // então eles não estão em ordem | |
} | |
int main(){ | |
scanf("%d", &n); // leio o valor de n | |
for(int i=1; i<=n; i++) scanf(" %s %lf", classe[i].nome, &classe[i].nota); // leios os nomes e notas dos alunos da classe | |
sort(classe+1, classe+n+1, compara); // e o ordeno o vetor classe segundo a função compara | |
// depois imprimo os nomes dos alunos salvos ordenadamente no vetor | |
for(int i=1; i<=n; i++) printf("%s\n", classe[i].nome); // para cada aluno i, imprimo o membro nome de classe[i] | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment