DSA Employee ledger sorting searching

PHOTO EMBED

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;
	}
content_copyCOPY