fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct pessoa {
  5. char nome[20];
  6. int idade;
  7. };
  8.  
  9. int compararIdade (const void *x, const void *y) {
  10. int pri = ((struct pessoa *)x)->idade;
  11. int seg = ((struct pessoa *)y)->idade;
  12. return (pri - seg);
  13. }
  14.  
  15. int compararNome (const void *a, const void *b) {
  16. return strcmp (((struct pessoa *)a)->nome,((struct pessoa *)b)->nome);
  17. }
  18.  
  19. int main () {
  20. int i;
  21. int idades[]={9,7,8,5,2};
  22. char nomes[][20] = {"Joao","Pedro","Ana","Maria","Teste"};
  23. struct pessoa item[5];
  24.  
  25. printf("Pessoas sem ordem:\n");
  26. for (i = 0; i < 5; i++) {
  27. strcpy(item[i].nome, nomes[i]);
  28. item[i].idade = idades[i];
  29. printf("%s: %d\n", item[i].nome, item[i].idade);
  30. }
  31.  
  32. qsort(item, 5, sizeof(struct pessoa), compararIdade);
  33.  
  34. printf("Pessoas ordenadas por idade:\n");
  35. for (i = 0; i < 5; i++) {
  36. printf("%s: %d\n", item[i].nome, item[i].idade);
  37. }
  38.  
  39. qsort(item, 5, sizeof(struct pessoa), compararNome);
  40.  
  41. printf("Pessoas ordenadas por nome:\n");
  42. for (i = 0; i < 5; i++) {
  43. printf("%s: %d\n", item[i].nome, item[i].idade);
  44. }
  45.  
  46. return(0);
  47. }
  48.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
Pessoas sem ordem:
Joao: 9
Pedro: 7
Ana: 8
Maria: 5
Teste: 2
Pessoas ordenadas por idade:
Teste: 2
Maria: 5
Pedro: 7
Ana: 8
Joao: 9
Pessoas ordenadas por nome:
Ana: 8
Joao: 9
Maria: 5
Pedro: 7
Teste: 2