Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct Person
- {
- char firstname[64];
- char lastname[64];
- int age;
- };
- int Person_cmp_firstname(const void* x, const void* y) {
- struct Person *p1 = (struct Person*)x;
- struct Person *p2 = (struct Person*)y;
- return strcmp(p1->firstname, p2->firstname);
- }
- int Person_cmp_lastname(const void* x, const void* y ) {
- struct Person *p1 = (struct Person*)x;
- struct Person *p2 = (struct Person*)y;
- return strcmp(p1->lastname, p2->lastname);
- }
- int Person_cmp_age(const void* x, const void* y) {
- int p1 = ((struct Person*)x)->age;
- int p2 = ((struct Person*)y)->age;
- if (p1 < p2)
- return -1;
- else if (p1 > p2)
- return 1;
- else
- return 0;
- }
- struct Person createP(){
- struct Person *p;
- p = (struct Person *)malloc(sizeof(struct Person));
- printf("Enter the Firstname:");
- scanf("%s", p->firstname);
- printf("Enter the Lastname:");
- scanf("%s", p->lastname);
- printf("Enter the Age:");
- scanf("%d", &p->age);
- return *p;
- }
- int main(void)
- {
- char answer = 0;
- struct Person* arr[3];
- arr[0]=createP();
- arr[1]=createP();
- arr[2]=createP();
- printf("Sort by [F]irstname, [L]astname or [A]ge:");
- scanf(" %c", &answer);
- switch(answer){
- case 'f': case 'F':
- qsort(arr, 3, sizeof(struct Person), Person_cmp_firstname);
- printf("1.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[0].firstname, arr[0].lastname, arr[0].age);
- printf("2.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[1].firstname, arr[1].lastname, arr[1].age);
- printf("3.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[2].firstname, arr[2].lastname, arr[2].age);
- break;
- case 'l': case 'L':
- qsort(arr, 3, sizeof(struct Person), Person_cmp_lastname);
- printf("1.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[0].firstname, arr[0].lastname, arr[0].age);
- printf("2.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[1].firstname, arr[1].lastname, arr[1].age);
- printf("3.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[2].firstname, arr[2].lastname, arr[2].age);
- break;
- case 'a': case 'A':
- qsort(arr, 3, sizeof(struct Person), Person_cmp_age);
- printf("1.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[0].firstname, arr[0].lastname, arr[0].age);
- printf("2.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[1].firstname, arr[1].lastname, arr[1].age);
- printf("3.Person Firstname: %s, Lastname: %s, Age: %d\n",arr[2].firstname, arr[2].lastname, arr[2].age);
- break;
- default:
- printf("Only F, L or A are accepted commands\n");
- break;
- }
- free(&arr[0]);
- free(&arr[1]);
- free(&arr[2]);
- free(arr);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement