#include<iostream.h>
#include<stdio.h>
#include<conio.h>
struct node
{
char ch;
float start,end;
float p;
}n[30];
void sort(node n[], int m)
{
node temp;
//float small=n[0].p;
//int pos=0;
for(int i=0;i<m-1;i++)
{
for(int j=i+1;j<m;j++)
{
if(n[i].p<n[j].p)
{
temp=n[j];
n[j]=n[i];
n[i]=temp;
}
}
}
cout<<“\nSorted array is”;
for( i=0;i<m;i++)
{
cout<<“\n”<<n[i].ch;
}
}
void getpoint(node n[], int m)
{ int i=0;
n[0].start=0.0;
//int i=0;
for(int k=1;k<m;k++)
{
n[i].end=n[i].start+n[i].p;
n[k].start=n[i].end;
i++;
}
k–;
n[k].end=1.0;
}
node check(node n[],int m, char c)
{ node temp;
for(int i=0;i<m;i++)
{
if(c==n[i].ch)
{
temp=n[i];
}
}
return temp;
}
void display(node n[],int m)
{
for(int h=0;h<m;h++)
{
cout<<“\n character”<<n[h].ch;
cout<<“\n start point”<<n[h].start;
cout<<“\n end point”<<n[h].end;
}
}
void calc(node n[],int m,node x,float a)
{
n[0].start=x.start;
int i=0;
for(int k=1;k<m;k++)
{
n[i].end=n[i].start+n[i].p*a;
n[k].start=n[i].end;
i++;
}
k–;
n[k].end=x.end;
}
void main()
{
clrscr();
int m;
cout<<“enter the size of array”;
cin>>m;
cout<<“enter”;
for(int i=0;i<m;i++)
{
cin>>n[i].ch;
cout<<“\n p ??”;
cin>>n[i].p;
n[i].start=n[i].end=0.0;
}
sort(n,m);
getpoint(n,m);
display(n,m);
char str[30];
cout<<“enter string”;
gets(str);
fflush(stdin);
node x;
float a;
a=1;
for(i=0;i<m-1;i++)
{
clrscr();
x=check(n,m,str[i]);
a=x.end-x.start;
calc(n,m,x,a);
display(n,m);
getch();
}
cout<<“\n”<<n[m-1].start<<“_>”<<n[m-1].end;
getch();
}