ADA lab file ( Md Emat Haider )
ADA lab file ( Md Emat Haider )
USING C++
Practical File
Submitted by
Name : Md Emat Haider
Semester :V
College Roll No : 2 2 CSB028
University Roll No : 221920690007
Academic Year : 2024-2025
Submitted to
Dr. Mohd Shahid
Assistant Professor, CSE
#include <iostream>
using namespace std;
int binarySearch(int[], int, int, int);
int main()
{
int num[10] = {10, 22, 37, 55, 92, 118};
int search_num, loc=-1;
cout<<"Enter the number that you want to search: ";
cin>>search_num;
loc = binarySearch(num, 0, 6, search_num);
if(loc != -1)
{
cout<<search_num<<" found in the array at the location: "<<loc;
}
else
{
cout<<"Element not found";
}
return 0;
}
}
return -1;
}
Output
Program No-2
Write a program in C++ to implement binary search using recursive approach
#include <iostream>
using namespace std;
} else {
if(arr[mid] == num){
cout << "Number is found at " << mid << " index \n";
return 0;
end);
beg = 0;
end = n-
1;
return 0;
}
Output
Program No-3
Write a program in C++ to implement Quick Sort.
int main()
{
int n;
cout<<"Enter the size of the array"<<endl;
cin>>n;
int a[n];
cout<<"Enter the elements in the array"<<endl;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cout<<"sorting using quick
sort"<<endl; int p=1,r=n;
QUICKSORT(a,p,r);
cout<<"sorted form"<<endl;
for(int i=1;i<=n;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
}
return 0;
}
i=i+1;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
temp1=a[i+1];
a[i+1]=a[r];
a[r]=temp1;
return i+1;
}
Output
Program No-4
Write a program in C++ to implement Merge Sort.
#include<iostream>
using namespace std;
int main()
{
int n;
cout<<"Enter the size of the array"<<endl;
cin>>n;
int a[n];
cout<<"Enter the elements in the array"<<endl;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
merge_sort(a,p,r);
cout<<"sorted form"<<endl;
for(int i=1;i<=n;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
}
return 0;
}
#include<iostream>
using namespace
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n-1;i++)
{
min=a[i];
loc=i;
for(j=i+1;j<n;j++)
{
if(min>a[j])
{
min=a[j];
loc=j;
}
}
temp=a[i];
a[i]=a[loc];
a[loc]=temp;
}
return 0;
}
Output
Program No-6
Write a program in C++ for implementation of fractional Knapsack problem using
Greedy Method
#include<bits/stdc++.h>
using namespace std;
int main(){
float a[50],aa[50];
int n,temp,i,j;
int constraints,u;
double x[20];
float profit=0,s[10];
cout<<"Enter object & constraints "<<endl;
cin>>n>>constraints;
cout<<"Enter profit and weight"<<endl;
for(int i=0; i<n; i++){
cin>>a[i];
cin>>aa[i];
}
for(i=0; i<n; i++)
{s[i]=a[i]/aa [i];
}
for(i=0; i<n-1;
i++){ for(j=i+1; j<n; j+
+){
if(s[i]<s[j])
temp=s[j];
s[j]=s[i];
s[i]=temp;
temp=a[j];
a[j]=a[i];
a[i]=temp;
temp=aa[j];
aa[j]=aa[i];
aa[i]=temp;
}
}
u=constraints;
for(i=0; i<n; i++)
{
x[i]=0;
}
for(i=0; i<n; i++)
{if(aa[i]>u)
{ break;
}
else{
x[i]=1.0;
profit= profit+a[i];
u=u-aa[i];
}
}
if(i<n)
x[i]=u/aa[i];
profit=profit+a[i]*x[i];
cout<<profit<<endl;
return 0;
}
Output
Program No-7
Write a program in C++ for 0/1 Knapsack problem using Dynamic programming
#include <iostream>
#include <climits>
using namespace
std;
// Values (stored in array `v`)
// Weights (stored in array `w`)
// Total number of distinct items `n`
// Knapsack capacity `W`
int knapsack(int v[], int w[], int n, int W)
{
// base case: Negative capacity
if (W < 0) {
return INT_MIN;
}
// Case 1. Include current item `v[n]` in the knapsack and recur for
// remaining items `n-1` with decreased capacity `W-w[n]`
int include = v[n] + knapsack(v, w, n - 1, W - w[n]);
// Case 2. Exclude current item `v[n]` from the knapsack and recur for
// remaining items `n-1`
int exclude = knapsack(v, w, n - 1, W);
// knapsack capacity
int W = 10;
return 0;
}
Output
Program No-8
Write a program in C++ to find the shortest path from a given vertex to other vertices
in a weighted connected graph using Dijkstra’s algorithm
#include<iostream>
#include<stdio.h>
using namespace
std;
#define INFINITY 9999
#define max 5
void dijkstra(int G[max][max],int n,int startnode);
int main() {
int G[max][max]={{0,1,0,3,10},{1,0,5,0,0},{0,5,0,2,1},{3,0,2,0,6},{10,0,1,6,0}};
int n=5;
int u=0;
dijkstra(G,n,u);
return 0;
}
void dijkstra(int G[max][max],int n,int startnode)
{int cost[max][max],distance[max],pred[max];
int visited[max],count,mindistance,nextnode,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(G[i][j]==0)
cost[i][j]=INFINITY;
else
cost[i][j]=G[i][j];
for(i=0;i<n;i++) {
distance[i]=cost[startnode][i];
pred[i]=startnode;
visited[i]=0;
}
distance[startnode]=0;
visited[startnode]=1;
count=1;
while(count<n-1) {
mindistance=INFINITY;
for(i=0;i<n;i++)
if(distance[i]<mindistance&&!visited[i])
{mindistance=distance[i];
nextnode=i;
}
visited[nextnode]=1;
for(i=0;i<n;i++)
if(!visited[i]) if(mindistance+cost[nextnode]
[i]<distance[i]) {
distance[i]=mindistance+cost[nextnode][i];
pred[i]=nextnode;
}
count++;
}
for(i=0;i<n;i++)
if(i!=startnode) {
cout<<"\nDistance of
node"<<i<<"="<<distance[i]; cout<<"\nPath="<<i;
j=i;
do
{
j=pred[j];
cout<<"<-"<<j;
}while(j!=startnode);
}
}
Output
Program No-9
Write a program in C++ to find the minimum spanning tree of a given directed graph
#include<iostream>
// main
function int
main()
{
int cost[V][V];
cout<<"Enter the vertices for a graph with 6
vetices"; for (int i=0;i<V;i++)
{
for(int j=0;j<V;j++)
{
cin>>cost[i][j];
}
}
find_MST(cost);
return 0;
}
Output
Program No-10
Write a program to check whether a given graph is connected or not using DFS method
#include<stdio.h>
#include<conio.h>
int a[20][20],reach[20],n;
void dfs(int v)
{
int i;
reach[v]=1;
for(i=1;i<=n;i++)
if(a[v][i] && !
reach[i])
{
printf("\n %d->%d",v,i);
dfs(i);
}
}
void main()
{
int i,j,count=0;
clrscr();
printf("\n Enter number of vertices:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
reach[i]=0;
for(j=1;j<=n;j++) a[i]
[j]=0;
}
printf("\n Enter the adjacency matrix:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
dfs(1);
printf("\n");
for(i=1;i<=n;i++)
{
if(reach[i])
count++;
}
if(count==n)
printf("\n Graph is connected");
else
printf("\n Graph is not connected");
getch();
}
Output