damihenrique

Ordenando_Struct

Nov 19th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <cstring>
  5. #include <vector>
  6. #include <algorithm>
  7. #include <utility>
  8. #include <queue>
  9. #include <map>
  10. #include <stack>
  11. #include <cmath>
  12. #include <set>
  13. #include <ctype.h>
  14. #include <bitset>
  15.  
  16. using namespace std;
  17.  
  18. struct pessoa{
  19.     char nome[30];
  20.     int idade;
  21. };
  22.  
  23. pessoa p[10]; // crio um vetor p do tipo pessoa
  24.  
  25. // ordena em ralação a menor altura
  26. // se empatar a altura, ordena em ordem alfabetica
  27.  
  28. bool comp(pessoa a, pessoa b){ // aqui sempre são os dois parametros do tipo(struct)
  29.                                 // e nomes quaisquers para as variáveis, eu usei a e b
  30.     if(a.idade < b.idade)
  31.         return true;            // como eu quero a menor idade, e a < b, retorno true
  32.     else if(b.idade < a.idade)           // pois o primeiro parametro da minha funcao(a)
  33.         return false;                    // eh sempre verdadeiro, e o segundo(b), sempre falso
  34.     else if(strcmp(a.nome,b.nome) < 0)
  35.         return true;  // strcmp == 0, nomes iguais... strcmp < 0, o primeiro parametro vem antes que o segundo
  36.     else                    // strcmp > 0, o segundo parametro vem antes que o primeiro
  37.         return false;  
  38. }
  39.  
  40. int main(){
  41.  
  42.     int n;
  43.    
  44.     cin>>n;
  45.     getchar();
  46.    
  47.     for(int i=0; i<n; i++){
  48.         cin>>p[i].idade>>p[i].nome; // lendo uma idade e um nome na posicao I do meu vetor de pessoa
  49.     }    
  50.    
  51.     sort(p,p+n,comp); // ordenando o vetor p, do jeito que eu quiser na minha funcao comp
  52.    
  53.     for(int i=0; i<n; i++)
  54.         cout<<p[i].idade<<" - "<<p[i].nome<<endl;    // exibindo ordenado
  55.    
  56.     system("pause");
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment