DSA Employee ledger sorting searching
Fri Aug 25 2023 06:25:34 GMT+0000 (Coordinated Universal Time)
Saved by @Astik
#include<stdio.h> #include<string.h> #include<conio.h> struct emp{char name[20]; int empid; int salary; int exp; }; int n, minindex, maxin,maxsal; int i,j, targetempid,left,right,mid,found; struct emp key, *ptr; void enterdetails(struct emp employee[]){ for(i=0;i<n;i++){ printf("Enter name for emp %d ",i+1); scanf("%s", employee[i].name); printf("Enter empid for emp %d ",i+1); scanf("%d ",&employee[i].empid); printf("Enter salary of emp %d ",i+1); scanf("%d", &employee[i].salary); printf("Enter experience for emp %d ",i+1); scanf("%d",&employee[i].exp); } } void printdetails(struct emp employee[]){ for(i=0;i<n;i++){ printf("Details for emp %d:\n",i+1); printf("Name: %s\n",employee[i].name); printf("Empid : %d\n",employee[i].empid); printf("Salary: %d\n",employee[i].salary); printf("Experience: %d\n",employee[i].exp); printf("\n"); } } void empidsort(struct emp employee[]){ for(i=0;i<n-1;i++){ minindex=i; for(j=i+1;j<n;j++){ if(employee[j].empid<employee[minindex].empid) minindex=j; } key=employee[i]; employee[i]=employee[minindex]; employee[minindex]=key; } printdetails(employee); } void salarysort(struct emp employee[]){ for(i=0;i<n-1;i++){ minindex=i; for(j=i+1;j<n;j++){ if(employee[j].salary<employee[minindex].salary) minindex=j; } key=employee[i]; employee[i]=employee[minindex]; employee[minindex]=key; } printdetails(employee); } void expsort(struct emp employee[]){ for(i=0;i<n-1;i++){ minindex=i; for(j=i+1;j<n;j++){ if(employee[j].exp<employee[minindex].exp) minindex=j; } key=employee[i]; employee[i]=employee[minindex]; employee[minindex]=key; } printdetails(employee); } void maxsalary(struct emp employee[]){ int maxin=0; int maxsal=employee[0].salary; for(i=1;i<n;i++){ if(employee[i].salary>maxsal) maxin=i; } ptr=&employee[maxin]; printf("Max salary is %d of employee %s having empid %d. \n",ptr->salary,ptr->name,ptr->empid); } void searchemp(struct emp employee[]){ empidsort(employee); printf("Enter the empid to search : "); scanf("%d",&targetempid); left=0,right=n-1,found=-1; while(left<=right){ int mid=left+(right-left)/2; if(employee[mid].empid==targetempid){ found=mid; break; } else if(employee[mid].empid<targetempid){ left=mid+1; }else { right=mid-1; } }if(found!=-1){ printf("Employee found\n"); printf("Name : %s\n",employee[found].name); printf("Empid: %d\n",employee[found].empid); printf("Salary : %d\n",employee[found].salary); printf("Experience :%d\n",employee[found].exp); }else{ printf("Employee with empid %d not found.\n",targetempid); } } int main(){ int choice=1; int ch; struct emp employee[20]; clrscr(); printf("Enter count of employee: "); scanf("%d",&n); enterdetails(employee); printdetails(employee); do{ printf("Enter your choice:\n"); printf("Sorting using empid: 1\nSorting using exp: 2\nSorting using Salary: 3\n Search For max salary: 4\n search for empid: 5\n Display: 6\n"); scanf("%d",&ch); switch(ch){ case 1: empidsort(employee); break; case 2: expsort(employee); break; case 3: salarysort(employee); break; case 4: maxsalary(employee); break; case 5: searchemp(employee); break; case 6: printdetails(employee); break; default: printf("Enter valid choice\n"); break; } printf("Do you want to continue(1 for YES 0 for NO):"); scanf("%d",&choice); }while(choice!=0); getch(); return 0; }
Comments