Ada Programs
Ada Programs
printf("sorted array:");
for(i=0;i<n;i++)
printf("enter the elements to be searched:");
scanf("%d",&item);
start=clock();
delay(110);
flag=bsearch(a,item,0,n-1);
end=clock();
if(flag==-1)
printf("the item %d not found",item);
else
printf("the item %d found at pos %d",item,flag+1);
printf("time taken=%f",(end,start)/(CLK_TCK) );
getch();
}
int bsearch(int a[],int item,int first,int last)
{
int middle;
if(first>last)
return(-1);
else
{
middle=(first+last)/2;
if(item<a[middle])
return(bsearch(a,item,first,middle-1));
else if(item>a[middle])
return(bsearch(a,item,middle+1,last));
else
return(middle);
}
}
Program 4:WAP to sort given set of no. using selection sort algorithm.
Repat for different value of N , number of element in list to be
searched and plot A graph of time taken versus N.the element can be
read from a file or can be generated using random number generator.
#include<stdio.h>
void main()
{
int a[100],num,min,i,j,temp;
clrscr();
printf("\n please enter the totall elements:");
scanf("%d",&num);
printf("\n please enter the array elements :");
for(i=0;i<num;i++)
scanf("%d",&a[i]);
for(i=0;i<num-1;i++)
{
min=i;
for(j=i+1;j<num;j++)
{
if(a[min]>a[j]){
min=j;
}
}
if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
printf("\nresult:");
for(i=0;i<num;i++)
{
printf("%d\n",a[i]);
}
printf("\n");
getch();
}
Program 5: WAP To find value of A using brute force based algorithm
and divide and conquer based algorithm.
#include<stdio.h>
int power(int n1,int n2);
void main()
{
int base,a,result;
clrscr();
printf("enter the base number :");
scanf("%d",&base);
printf("enter power number(positive integer):");
scanf("%d",&a);
result=power(base,a);
printf("%d^%d=%d",base,a,result);
getch();
}
int power(int base,int a)
{
if(a!=0)
return(base*power(base,a-1));
else
return 1;
}
Program 10: WAP to solve the string matching problem using boyer
moore apparaoch
#include<limits.h>
#include<string.h>
#include<stdio.h>
#define NO_OF_CHARS 256
int max(int a,int b) {return(a>b)?a:b;}
void badCharHeuristic(char*str,int size,int badchar[NO_OF_CHARS])
{
int i;
for(i=0;i<NO_OF_CHARS;i++)
badchar[i]=-1;
for(i=0;i<size;i++)
badchar[(int) str[i]]=i;
}
void search(char *txt,char *pat)
{
int m=strlen(pat);
int n=strlen(txt);
int badchar[NO_OF_CHARS];
int s=0;
badCharHeuristic(pat,m,badchar);
while(s<=(n-m))
{
int j=m-1;
while(j>=0 && pat[j]==txt[s+j])
j--;
if(j<0)
{
printf("\n pattern occurs at shift=%d",s);
s+=(s+m<n)? m-badchar[txt[s+m]]:1;
}
else
s+=max(1,j-badchar[txt[s+j]]);
}
}
void main()
{
char txt[]="SRISREENI";
char pat[]="SRE";
clrscr();
search(txt,pat);
getch();
}
while(i<M){
if(pat[i]==pat[length]){
length++;
pps[i]=length;
i++;
}
else{
if(length!=0)
length=pps[length-1];
else{
pps[i]=0;
i++;
}
}
}
}
void KMPAlgorithm(char* text,char* pattern)
{
int M=strlen(pattern);
int N=strlen(text);
int pps[M];
int i=0;
int j=0;
prefixSuffixArray(pattern,M,pps);
while(i<N){
if(pattern[j]==text[i]){
j++;
i++;
}
if(j==M){
printf("found pattern at index %d",i-j);
j=pps[j-i];
}
else if(i<N&&pattern[j]!=text[i]){
if(j!=0)
j=pps[j-1];
else
i=i+
1;
}
}
}
void main()
{
char text[]="sreenivasrao";
char pattern[]="sree";
printf("the pattern is found inthe text inthe following index");
KMPAlgorithm(text,pattern);
getch();
}
Program 12: WAP to implement BFS traversal algorithym.
#include <stdio.h>
#include<stdlib.h>
#define SIZE 40
struct queue
{
int items[SIZE];
int front;
int rear;
};
//BPS algorithm
graph->visited[startVertex]=1;
enqueue(q,startVertex);
while (!isEmpty(q)){
printQueue(q);
int currentVertex=dequeue(q);
printf(" Visited %d\n", currentVertex);
struct node* temp = graph->adjLists[currentVertex];
while (temp) {
int adjVertex=temp->vertex;
if (graph->visited[adjVertex]==0)
{
graph->visited[adjVertex]= 1;
enqueu(q, adjVertex);
}
temp=temp->next;
}
}
}
//Creating a node
int i;
graph->adjLists[i] = NULL;
graph->visited[i] = 0;
}
return graph;
}
//Add edge
newNode=createNode(src);
newNode->next=graph->adjLists(dest);
//Create a queue
q->front = -1;
q-> rear=-1;
return q;
if (q->rear==-1)
return 1;
else
return 0;
if (q->rear==SIZE -1)
printf("\nQueue is Full!");
else {
if (q->front == -1)
q->front = 0;
q->rear++;
q->items[q->rear] = value;
}
}
int item;
if (isEmpty(q)) {
printf("Queue is empty");
item = -1;
} else {
item=q->items[q->front];
q->front++;
if (q->front> q->rear) {
printf("Resetting queue");
q->front=q->rear = -1;
return item;
}
}
int i = q->front;
if (isEmpty(q)) {
printf("Queue is empty");
} else {
addEdge(graph, 1, 2);
addEdge(graph, 1, 3);
addEdge(graph, 3, 4);
bfs(graph, 0);
return 0;
}
}
Program 13: WAP to find minimum spinning tree of given graph using
prims algorithm.
#include<stdio.h>
#include<stdlib.h>
#define infinity 9999
#define MAX 20
int prims();
void main()
scanf("%d", &n);
for(j=0;j<n;j++)
scanf("%d", &G[i][j]);
total_cost=prims();
for(i=0;i<n;i++)
printf("\n");
for(j=0;j<n;j++)
printf("%d\t", spanning[i][j]);
getch();
int prims()
{
int cost[MAX][MAX];
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]=0;
spanning[i][j]=0;
distance[0]=0;
visited[0]=1;
for(i=1;i<n;i++)
distance[i]=cost[0][0];
from[i]=0;
visited[i]=0;
}
min_cost =0; //cost of spanning tree
for(i=1;i<n;i++)
min_distance=distance[i];
u=from[v];
spanning[v][u]=distance[v];
spanning[u][v]=distance[v];
no_of_edges--;
visited[v]=1;
for(i=1;i<n;i++)
if(visited[i]==0&&cost[i][v]<distance[i])
distance[i]=cost[i][v];
from [i]=v;
min_cost=min_cost+cost[u][v];
return(min_cost);
int a[10][10],i,j,n;
scanf("%d",&n);
printf("\n");
}
warshall(a,n);
return 0;
}
int i,j,k;
for(k=1;k<=n;k++)
{
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
{
if((p[i][j]==0) && (p[i][k]==1) && (p[k][j]==1))
{
p[i][j]=1;
}
}
}
}
printf("\nThe path matrix is \n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d\t", p[i][j]);
}
printf("\n");
}
}