Practical 8 - NEW
#include <stdio.h>
#include <string.h>
typedef struct Employee
{
char Employee_name[20];
int emp_no;
float emp_salary;
} Employee;
void binarysearch(Employee s[], int num, int n)
{
int count = 0;
int first = 0;
int last = n - 1;
int flag = 0, mid;
while (first <= last)
{
mid = (first + last) / 2;
count++;
if (num == s[mid].emp_no)
{
flag = 1;
break;
}
else if (num > s[mid].emp_no)
first = mid + 1;
else
last = mid - 1;
}
if (flag == 1)
{
printf("\nRecord found");
printf("\nName\tEmployee no.\tSalary\n");
printf("-------------------------------");
printf("\n%s\t %d\t\t%0.2f\n", s[mid].Employee_name, s[mid].emp_no, s[mid].emp_salary);
printf("\nTotal comparisons happened = %d\n", count);
}
else
printf("\nRecord not found");
// return flag;
}
int main()
{
int n;
printf("Enter no. of Employees: ");
scanf("%d", &n);
Employee s[n];
for (int i = 0; i < n; i++)
{
printf("\nEnter Name, Employee no., Salary of Employee %d\n", i + 1);
scanf("%s %d %f", s[i].Employee_name, &s[i].emp_no, &s[i].emp_salary);
}
int num;
char ch;
do
{
printf("\nEnter the emp_no to be searched: ");
scanf("%d", &num);
binarysearch(s, num, n);
// if (binarysearch(s, num, n) == 1)
// {
// printf("\nRecord found");
// printf("\nName\tEmployee no.\tSalary\n");
// printf("-------------------------------");
// printf("\n%s\t %d\t\t%0.2f\n", s[mid].Employee_name, s[mid].emp_no, s[mid].emp_salary);
// printf("\nTotal comparisons happened = %d\n", count);
// }
// else
// printf("\nRecord not found");
printf("\nDo you want to search again?(y/n): ");
scanf(" %c", &ch);
} while (ch == 'y');
}
Comments
Post a Comment