Data STructure LAb 9
#include <iostream>
using namespace std;
void merge(int left[],int right[],int arr[],int mid,int lengthmid);
int count=0;
//factorial
int fact(int n)
{
if(n==0)
return 1;
else
return fact(n-1)*n;
}
int fibon(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
else
return fibon(n-2)+fibon(n-1);
}
//merge sort
void mergesort(int arr[],int low,int high)
{
int length=low+high;
int mid=length/2;
int left[mid];
int right[length-mid];
if(length<2)
return ;
for(int i=0;i<mid;i++)
left[i]=arr[i];
for(int j=mid;j<length;j++)
right[j-mid]=arr[j];
mergesort(left,0,mid);
mergesort(right,0,length-mid);
merge(left,right,arr,mid,length-mid);
}
//merge all
void merge(int left[],int right[],int arr[],int mid,int lengthmid)
{
int i=0,j=0,k=0;
while(i<mid&& j<lengthmid)
{
if(left[i]<=right[j])
{
arr[k]=left[i];
i++;
}
else
{
arr[k]=right[j];
j++;
}
k++;
}
while(i<mid)
{
arr[k]=left[i];
i++;
k++;
}
while(j<lengthmid)
{
arr[k]=right[j];
j++;
k++;
}
}
void TowerofHonoi(int n,char beg,char end,char aux)
{
if(n==1)
{
cout<<"Move disk 1 from Rod "<<beg<<" to "<<aux<<endl;
return;
count++;
}
TowerofHonoi(n-1,beg,aux,end);
count++;
cout<<"Move disk "<<n<< " from "<<beg<<" to "<<end<<endl;
TowerofHonoi(n-1,aux,beg,end);
count++;
}
int main()
{
int choice,n;
do{
cout<<"********************************* \n";
cout<<"1: for Factorial of any number: \n";
cout<<"2: for Fibonacci series \n";
cout<<"3: for merge sort \n ";
cout<<"4: Implementation of Tower of Hanoi \n";
cout<<"5: exit \n";
cout<<"********************************* \n";
cout<<"ENter Choice: ";
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"ENter the number You want Factorial: ";
cin>>n;
cout<<"The factorial of "<<n<<" is "<<fact(n)<<endl;
break;
}
case 2:
{
int i=0;
cout<<"ENter the number You want Fibbonacci Series: ";
cin>>n;
cout<<"The Fibbonacci series of "<<n<<" is ";
while(i<n)
{
cout<<fibon(i)<<" ";
i++;
}
cout<<endl;
break;
}
case 3:
{
cout<<"Enter Size of Array: ";
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cout<<"ENter Element "<<i+1<<" : ";
cin>>arr[i];
}
mergesort(arr,0,n);
cout<<"After Sorting: \n";
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
cout<<endl;
break;
}
case 4:
{
cout<<"ENter No of disks: ";
cin>>n;
TowerofHonoi(n,'A','B','C');
cout<<"The Number of time programs runs "<<count<<endl;
break;
}
case 5:
{
break;
}
default:
cout<<"Invalid Input \n";
}
}while(choice!=5);
}
using namespace std;
void merge(int left[],int right[],int arr[],int mid,int lengthmid);
int count=0;
//factorial
int fact(int n)
{
if(n==0)
return 1;
else
return fact(n-1)*n;
}
int fibon(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;
else
return fibon(n-2)+fibon(n-1);
}
//merge sort
void mergesort(int arr[],int low,int high)
{
int length=low+high;
int mid=length/2;
int left[mid];
int right[length-mid];
if(length<2)
return ;
for(int i=0;i<mid;i++)
left[i]=arr[i];
for(int j=mid;j<length;j++)
right[j-mid]=arr[j];
mergesort(left,0,mid);
mergesort(right,0,length-mid);
merge(left,right,arr,mid,length-mid);
}
//merge all
void merge(int left[],int right[],int arr[],int mid,int lengthmid)
{
int i=0,j=0,k=0;
while(i<mid&& j<lengthmid)
{
if(left[i]<=right[j])
{
arr[k]=left[i];
i++;
}
else
{
arr[k]=right[j];
j++;
}
k++;
}
while(i<mid)
{
arr[k]=left[i];
i++;
k++;
}
while(j<lengthmid)
{
arr[k]=right[j];
j++;
k++;
}
}
void TowerofHonoi(int n,char beg,char end,char aux)
{
if(n==1)
{
cout<<"Move disk 1 from Rod "<<beg<<" to "<<aux<<endl;
return;
count++;
}
TowerofHonoi(n-1,beg,aux,end);
count++;
cout<<"Move disk "<<n<< " from "<<beg<<" to "<<end<<endl;
TowerofHonoi(n-1,aux,beg,end);
count++;
}
int main()
{
int choice,n;
do{
cout<<"********************************* \n";
cout<<"1: for Factorial of any number: \n";
cout<<"2: for Fibonacci series \n";
cout<<"3: for merge sort \n ";
cout<<"4: Implementation of Tower of Hanoi \n";
cout<<"5: exit \n";
cout<<"********************************* \n";
cout<<"ENter Choice: ";
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"ENter the number You want Factorial: ";
cin>>n;
cout<<"The factorial of "<<n<<" is "<<fact(n)<<endl;
break;
}
case 2:
{
int i=0;
cout<<"ENter the number You want Fibbonacci Series: ";
cin>>n;
cout<<"The Fibbonacci series of "<<n<<" is ";
while(i<n)
{
cout<<fibon(i)<<" ";
i++;
}
cout<<endl;
break;
}
case 3:
{
cout<<"Enter Size of Array: ";
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
{
cout<<"ENter Element "<<i+1<<" : ";
cin>>arr[i];
}
mergesort(arr,0,n);
cout<<"After Sorting: \n";
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
cout<<endl;
break;
}
case 4:
{
cout<<"ENter No of disks: ";
cin>>n;
TowerofHonoi(n,'A','B','C');
cout<<"The Number of time programs runs "<<count<<endl;
break;
}
case 5:
{
break;
}
default:
cout<<"Invalid Input \n";
}
}while(choice!=5);
}
Comments
Post a Comment