Soundex coding involves translating each word into a series of digits in which each digit represents a letter:
1 represents B, F, P, or V 2 represents C, G, J, K, Q, S, X, or Z 3 represents D or T 4 represents L 5 represents M or N 6 represents RThe letters A, E, I, O, U, H, W, and Y are not represented in Soundex coding, and repeated letters with the same code digit are represented by a single instance of that digit. Words with the same Soundex coding are considered equivalent.
Each line of input contains a single word, all upper case, less than 20 letters long. For each line of input, produce a line of output giving the Soundex code.
Sample Input
KHAWN PFISTER BOBBY
Output for Sample Input
25123611
#include<iostream>
#include<string>
using namespace std;
int main(){
int a[20],i,l,j,b1,b2,b3,b4,b5,b6;
string s;
while(cin>>s){
l=s.length();
//cout<<l<<endl;
for(i=0;i<l;i++)
// cout<<s[i]<<" ";
//cout<<endl;
j=0;
b1=0;
b2=0;
b3=0;
b4=0;
b5=0;
b6=0;
for(i=0;i<l;i++){
if(s[i]=='B'||s[i]=='F'||s[i]=='P'||s[i]=='V')
{
if(b1==0){
a[j]=1;
j++;
b1=1;
b2=0;
b3=0;
b4=0;
b5=0;
b6=0;
}
}
else if(s[i]=='C'||s[i]=='G'||s[i]=='J'||s[i]=='K'||s[i]=='Q'||s[i]=='S'||s[i]=='X'||s[i]=='Z'){
if(b2==0){
a[j]=2;
j++;
b1=0;
b2=1;
b3=0;
b4=0;
b5=0;
b6=0;
}
}
else if(s[i]=='D'||s[i]=='T'){
if(b3==0){
a[j]=3;
j++;
b1=0;
b2=0;
b3=1;
b4=0;
b5=0;
b6=0;
}
}
else if(s[i]=='L'){
if(b4==0){
a[j]=4;
j++;
b1=0;
b2=0;
b3=0;
b4=1;
b5=0;
b6=0;
}
}
else if(s[i]=='M'||s[i]=='N'){
if(b5==0){
a[j]=5;
j++;
b1=0;
b2=0;
b3=0;
b4=0;
b5=1;
b6=0;
}
}
else if(s[i]=='R'){
if(b6==0){
a[j]=6;
j++;
b1=0;
b2=0;
b3=0;
b4=0;
b5=0;
b6=1;
}
}
else{
b1=0;
b2=0;
b3=0;
b4=0;
b5=0;
b6=0;
}
}
for(int k=0;k<j;k++)
cout<<a[k];
cout<<endl;
}
return 0;
}