Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.01 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct Person
  6. {
  7.     char firstname[64];
  8.     char lastname[64];
  9.     int age;
  10. };
  11.  
  12. int Person_cmp_firstname(const void* x, const void* y) {
  13.    
  14.     struct Person *p1 = (struct Person*)x;
  15.     struct Person *p2 = (struct Person*)y;
  16.     return strcmp(p1->firstname, p2->firstname);
  17.    
  18. }
  19.  
  20.  
  21. int Person_cmp_lastname(const void* x, const void* y ) {
  22.    
  23.     struct Person *p1 = (struct Person*)x;
  24.     struct Person *p2 = (struct Person*)y;
  25.  
  26.     return strcmp(p1->lastname, p2->lastname);
  27.    
  28. }
  29.  
  30. int Person_cmp_age(const void* x, const void* y) {
  31.    
  32.     int p1 = ((struct Person*)x)->age;
  33.     int p2 = ((struct Person*)y)->age;
  34.  
  35.     if (p1 < p2)
  36.         return -1;
  37.     else if (p1 > p2)
  38.         return 1;
  39.     else
  40.         return 0;
  41. }
  42.  
  43. struct Person createP(){
  44.     struct Person *p;
  45.     p = (struct Person *)malloc(sizeof(struct Person));
  46.     printf("Enter the Firstname:");
  47.     scanf("%s", p->firstname);
  48.     printf("Enter the Lastname:");
  49.     scanf("%s", p->lastname);
  50.     printf("Enter the Age:");
  51.     scanf("%d", &p->age);
  52.    
  53.     return *p;
  54. }
  55.  
  56. int main(void)      
  57. {  
  58.    
  59.     char answer = 0;
  60.     struct Person* arr[3];
  61.     arr[0]=createP();
  62.     arr[1]=createP();
  63.     arr[2]=createP();
  64.    
  65.     printf("Sort by [F]irstname, [L]astname or [A]ge:");
  66.     scanf(" %c", &answer);
  67.     switch(answer){
  68.         case 'f': case 'F':
  69.             qsort(arr, 3, sizeof(struct Person), Person_cmp_firstname);
  70.             printf("1.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[0].firstname, arr[0].lastname, arr[0].age);  
  71.             printf("2.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[1].firstname, arr[1].lastname, arr[1].age);  
  72.             printf("3.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[2].firstname, arr[2].lastname, arr[2].age);
  73.             break;
  74.         case 'l': case 'L':
  75.             qsort(arr, 3, sizeof(struct Person), Person_cmp_lastname);
  76.             printf("1.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[0].firstname, arr[0].lastname, arr[0].age);  
  77.             printf("2.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[1].firstname, arr[1].lastname, arr[1].age);  
  78.             printf("3.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[2].firstname, arr[2].lastname, arr[2].age);
  79.             break;
  80.         case 'a': case 'A':
  81.             qsort(arr, 3, sizeof(struct Person), Person_cmp_age);
  82.             printf("1.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[0].firstname, arr[0].lastname, arr[0].age);  
  83.             printf("2.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[1].firstname, arr[1].lastname, arr[1].age);  
  84.             printf("3.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[2].firstname, arr[2].lastname, arr[2].age);
  85.             break;
  86.         default:
  87.             printf("Only F, L or A are accepted commands\n");
  88.             break;
  89.     }    
  90.     free(&arr[0]);
  91.     free(&arr[1]);
  92.     free(&arr[2]);
  93.     free(arr);
  94.    
  95.     return EXIT_SUCCESS;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement