Solved

extract name from datafile and find overlaping

Posted on 2002-07-07
53
775 Views
Last Modified: 2007-11-27
Hi there, all expert who is willing to help

I got the datfile which is in the following format:

surname, code1, code2, code3, code4

code1, code2, code3 and code4 are the basename of surname which coded by method1, method2, method3 and method4 respectively..!!

here is the datafile: (base.dat)
SMIT,SMIT,SMIT,SMAT,SNAT
SMITCH,SMITC,SMITC,SMATCH,SNATC
SMITE,SMITE,SMITE,SMAT,SNAT
SMITEN,SMITEN,SMITEN,SMATAN,SNATAN
SMITER,SMITER,SMITER,SMATAR,SNATAR
SMITH,SMIT,SMIT,SMATH,SNAT
SMITHALS,SMITALS,SMITAL,SMATHALS,SNATAL
SMITHAM,SMITAM,SMITAM,SMATHAM,SNATAN
SMITHARD,SMITARD,SMITARD,SMATHARD,SNATARD
SMITHARST,SMITARST,SMITARST,SMATHARST,SNATARST
SMITHE,SMITE,SMITE,SMATH,SNAT
SMITHEE,SMITEE,SMITEE,SMATH,SNAT
SMITHELS,SMITELS,SMITEL,SMATHALS,SNATAL
SMITHEM,SMITEM,SMITEM,SMATHAM,SNATAN
SMITHEMAN,SMITEMAN,SMITEMAN,SMATHAMAN,SNATANAN
SMITHEN,SMITEN,SMITEN,SMATHAN,SNATAN


here is what i would like to do...
search for surname by
entering surname:smith ---example
then the program will look at surname "smith" in datafile (base.dat) and then return this line:
SMITH,SMIT,SMIT,SMATH,SNAT -----Line6
After that, the program will look at each code (code1, 2, 3 and code4) in Line6 and try to find other codes in other lines which generated the same code1, code2, code3 and code4 as Line6

forexample: from line 6
SMITH,SMIT,SMIT,SMATH,SNAT
code1 = SMIT
code2 = SMIT
code3 = SMATH
code4 = SNAT

program will start looking up other lines which have got the code1 = SMIT, code2 =SMIT, code3 = SMATH and code4 =SNAT then return only surname which matched with the name code

for example:

1)find "SMIT" in code1 and then return the surname which got SMIT in code1 ...here are the surnames matched in code1):
SMIT
SMITH

2)find "SMIT" in code2 and then return the surname which got SMIT in code2,( here are the surnames matched in code2):

SMIT
SMITH

3)find "SMATH" in code3 and then return the surnames which got SMATH in code3..here are the surnames matched in code3):


SMITH
SMITHE
SMITHEE

4)find SNAT in code4 first and then return the surnames which got SNAT in code4 ..here are the surnames matched in code4):

SMIT
SMITE
SMITH
SMITHE
SMITHEE


and then program will generate out put like this:

SMITH,SMIT,SMIT,SMATH,SNAT --(Line Matched)

code1      code2   code3     code4
SMIT       SMIT    SMITH     SMIT
SMITH      SMITH   SMITHE    SMITE
                   SMITHEE   SMITH
                             SMITHE
                             SMITHEE

NOT YET FINISH, I would like the program to find the overlaping surname in each code and calculate the problability of overlaping by this formular: number of the same name appeared in each code/4
for example: SMIT appeared 3 times (in code1, 2, and 4)
3/4 = 0.75

SMITH =4/4 =1.0
SMITHE=2/4 =0.5
SMITHEE =2/4 =0.5
SMITE= 1/4 = 0.25

and then the program generates another output
like this:

surname matched     problability
SMITH                 1.0
SMIT                  0.75
SMITHE                0.5
SMITHEE               0.5
SMITE                 0.25

P.S. the surnames should be ranked by the probalbility value (maximum-->minimum as above)


Hope it's not too bad...

many tahnks,
Korsila
0
Comment
Question by:korsila
  • 30
  • 20
  • 2
  • +1
53 Comments
 
LVL 6

Expert Comment

by:ebosscher
Comment Utility
*laughing*

wow, you don't expect a lot do you?
0
 

Author Comment

by:korsila
Comment Utility
Ebosscher,
no idea, but a guy whop used to help me with this is busy...and I DON'T THINK HE DOEESN'T MIND FOR HELP...other comment is much more appreciated than saying nothing with laughing :)...
if you would like me to add more points..just asking ..!!

I am willing to do that getting some help from here...I KNOW IT'S NOT THAT DIFFICULT IF YOU know what you are doing as an expert here...I cann't mention the name of a nice expert who used to help me with this sort of question..!!!but thanks anyway for your comment even it's not worth reading/recieving it..!!!

Korsila
0
 
LVL 6

Expert Comment

by:ebosscher
Comment Utility
ok, but you have to write some of the code yourself.  You're asking for a full application, not a  problem you're having.  This is not a forum to have applications written, you want an application written call me, I'll bill ya for it.

Your snarky remark about people helping you, and my comment not being worth spit is unfair, you're questions are of application scope, not problem scope, and someone could spend a couple of days writing that.  How about you try to write it and come to us if you need some support, or some help with a difficult piece?

We are not here to write applications for you, we are here to help.

Cheers
0
 

Author Comment

by:korsila
Comment Utility
ebosscher,
it's no point to debate or argue here as I respecy many experts who used to help me with codes , to support me with ideas , to cheer me up when i am under pressure :)..as you might not know I am just a beginner of C and I love learning by exampling of codes based on my interests...this question is similar to the one i used to post it here and got a great help from a nice expert..but I cann't just put this question directly to him as i respect the rule  here...and I don't think anyone wants to give 300 points away to look at the my history of question/answer (the similar question with answer)..so i put a new question here to get differenmt ideas , positive suggestion from other experts as well as waiting for someone who is willing to help if he/she has time...I might try to implement the code by myself if I am a quick learner..but it 's far to easy and IT always take time to learn something and we have diffirent strategIES to work out...I like asking the questions to get some  good answers as my examples of codes and learn from there..it's much easier when i need to do something bigger...
are might be right , my question is application scope..but I will point out some answers based on my questions here as a links which I got helped from an expert here..anyway, thanks for your suggestion..!!!

Korsila
0
 

Author Comment

by:korsila
Comment Utility
the guide how to calculate prob.
The calculation is baed on this answer link (quiet similar):
http://www.experts-exchange.com/jsp/qManageQuestion.jsp?ta=cprog&qid=20291421

the guide how to do do overlaping, similar method
the overlaping method is based on this answer link:

http://www.experts-exchange.com/jsp/qManageQuestion.jsp?ta=cprog&qid=20139451

apparently, i cann't just put this question directly to an expert who has helped me to solve out the problems as the links above..!!!just wanna make it fair to anybody who has time to help..!!!with new ideas etc..

Korsila
0
 
LVL 3

Expert Comment

by:jimbucci
Comment Utility
Looks like homework to me...
If you look at the data it is already formatted for you.
Each line has 5 strings so a matrix (2 dimensional array) would be in order.

Fill in the array by reading each line.

Once you create the array searches are simple using nested loops.

Does this get you started?
JB

0
 

Author Comment

by:korsila
Comment Utility
jimbucci,
it's not a homework, it's something I am interested in with my hobbies...learning C with some examples based on my curious/challenging questions..if you see my history of questions , you would know i have been collecting load of exampling codes (something similar) from here for quiet sometimes even I know a bit of C language....honestly, i don't know where to start really frm your suggestion...but if you could provide me some codes to get going...I might have a go with it..well, you don't need to do this for me if you have no time and I only accept something (codes particulraly) which can sorted this problem out..!!! am good at thinking/asking the questions but don't know how to do really..!! just a beginner...

but thanks for your comments....

Korsila
0
 

Author Comment

by:korsila
Comment Utility
I am also learning and interesting how to put C codes on the webpage (using CGI/PERL)...and I haven't started looking at my old questions which  some experts are waiting/ willing to help..!!!problaby to get this done first and will move on to that part...!!!


kORSILA
0
 
LVL 16

Accepted Solution

by:
imladris earned 250 total points
Comment Utility
OK, got a bit of time finally. Here is code that does what is described. Certainly it handles the test case exactly.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void setfields(char *,char *[5]);

void main()
{     int i,j,tm,sl,dm,*in,sw,t;
     char bline[400],line[400],name[100],*bfield[5],*field[5],(*mname)[50],tname[50];
     FILE *namefile,*matchfile;

     printf("Enter name to search for:\n");
     gets(name);
     namefile=fopen("base.dat","r+");
     while(fgets(bline,400,namefile)!=NULL)
     {     setfields(bline,bfield);
          if(stricmp(bfield[0],name)==0)break;
     }
     if(stricmp(bfield[0],name)!=0)
     {     printf("No match found\n");
          exit(1);
     }
     printf("\n\nLine matched: ");
     for(i=0; i<4; ++i)printf("%s,",bfield[i]);
     printf("%s\n\n",bfield[4]);
     matchfile=fopen("tmp.dat","w+");
     tm=0;
     for(i=1; i<=4; ++i)
     {     fseek(namefile,0L,SEEK_SET);
          printf("CODE %d: ",i);
          while(fgets(line,400,namefile)!=NULL)
          {     setfields(line,field);
               if(stricmp(field[i],bfield[i])==0)
               {     sl=strlen(field[0]);
                    fwrite(&sl,1,4,matchfile);
                    fwrite(field[0],1,sl,matchfile);
                    printf("%s ",field[0]);
                    ++tm;
               }
          }
          printf("\n");
     }
     dm=0;
     fseek(matchfile,0L,SEEK_SET);
     mname=(char (*)[50])calloc(tm,50);
     in=(int *)calloc(tm,sizeof(int));
     for(i=0; i<tm; ++i)
     {     fread(&sl,1,4,matchfile);
          fread(tname,1,sl,matchfile);
          tname[sl]='\0';
          for(j=0; j<dm; ++j)
          {     if(stricmp(mname[j],tname)==0)
               {     ++in[j];
                    break;
               }
          }
          if(j>=dm)
          {     strcpy(mname[dm],tname);
               ++in[j];
               ++dm;
          }
     }
     fclose(matchfile);
     fclose(namefile);
     unlink("tmp.dat");

     for(i=0; (i==0 || sw) && i<dm; ++i)
     {     sw=0;
          for(j=0; j<dm-i; ++j)
          {     if(in[j]<in[j+1])
               {     strcpy(tname,mname[j+1]);
                    strcpy(mname[j+1],mname[j]);
                    strcpy(mname[j],tname);
                    t=in[j+1];
                    in[j+1]=in[j];
                    in[j]=t;
                    sw=1;
               }
          }
     }
     printf("\n\nmatched               probability\n");
     for(i=0; i<dm; ++i)
     {     in[i]=((in[i]*100)/4);
          printf("%-20s  %d.%02d\n",mname[i],in[i]/100,in[i]%100);
     }
}

void setfields(char *line,char *field[5])
{     field[0]=strtok(line,",");
     for(int i=1; i<5; ++i)field[i]=strtok(NULL,",");
     return;
}
0
 

Author Comment

by:korsila
Comment Utility
Iam ladris,
Sorry, just got time to have a loook at your code and test it...

here what i got after compiled:
cc: "overlap.c", line 90: error 1000: Unexpected symbol: "int".
cc: "overlap.c", line 90: error 1588: "i" undefined.
cc: "overlap.c", line 90: error 1558: The ! operator takes a scalar operand.
cc: "overlap.c", line 90: error 1549: Modifiable lvalue required for assignment operator.
cc: "overlap.c", line 90: error 1566: Test expression in for must be scalar.
cc: "overlap.c", line 90: error 1560: Modifiable lvalue required with operator "++".
-------------------

here is line 90:
void setfields(char *line,char *field[5])
{     field[0]=strtok(line,",");
    for(int i=1; i<5; ++i)field[i]=strtok(NULL,",");--90
    return;
}

so I have tried to change this function to:

void setfields(char *line,char *field[5])
{    
    int i;
    field[0]=strtok(line,",");
    for(i=1; i<5; ++i)field[i]=strtok(NULL,",");
    return;
}


however, the complier still complaint something like this:
/ccs/bin/ld: Unsatisfied symbols:
   stricmp (code)

have you got any clue to solve the problem out..?

many thanks and will wait for your quick reply..

Korsila

0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
We've run into that once before I think. Here is code for stricmp. Adding this to the program should take care of the unsatisfied symbol error.


int stricmp(char *s,char *t)
{     while(*s!='\0' && toupper(*s++)==toupper(*t++));
     return(*s-*t);
}
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
P.S. sorry about the error in the for loop. I've been working more in C++ lately, and it is showing through.
0
 

Author Comment

by:korsila
Comment Utility
here what I got: after add up the function... don't think the problem comes from there...


laping.c", line 91: error 1000: Unexpected symbol: "".
cc: "overlaping.c", line 92: error 1573: Type of "field" is undefined due to an illegal declaration.
cc: "overlaping.c", line 92: warning 518: Redeclaration of "field" hides formal parameter

void setfields(char *line,char *field[5])
{    
   int i;----line 91
   field[0]=strtok(line,","); --line 92
   for(i=1; i<5; ++i)field[i]=strtok(NULL,",");
   return;
}
-------------


as I told you early, when I compiled your code above and I got :
here what i got after compiled:
cc: "overlap.c", line 90: error 1000: Unexpected symbol: "int".
cc: "overlap.c", line 90: error 1588: "i" undefined.
cc: "overlap.c", line 90: error 1558: The ! operator takes a scalar operand.
cc: "overlap.c", line 90: error 1549: Modifiable lvalue required for assignment operator.
cc: "overlap.c", line 90: error 1566: Test expression in for must be scalar.
cc: "overlap.c", line 90: error 1560: Modifiable lvalue required with operator "++".
-------------------

what i should do to solve the out the error messages...I think it's the problem come from here...

WHAT DO YOU RECKON?
kORSILA


0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
HMmmm. I don't see anything wrong with that. It is also odd that you had resolved it (except for the missing stricmp), but when you added that, that now it returns with these messages. The first error seems to be complaining about something invisible, almost as if an unprintable character got into the file. Best thing I can think of is to try again. Here is the current code I have:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void setfields(char *,char *[5]);

void main()
{     int i,j,tm,sl,dm,*in,sw,t;
     char bline[400],line[400],name[100],*bfield[5],*field[5],(*mname)[50],tname[50];
     FILE *namefile,*matchfile;

     printf("Enter name to search for:\n");
     gets(name);
     namefile=fopen("base.dat","r+");
     while(fgets(bline,400,namefile)!=NULL)
     {     setfields(bline,bfield);
          if(stricmp(bfield[0],name)==0)break;
     }
     if(stricmp(bfield[0],name)!=0)
     {     printf("No match found\n");
          exit(1);
     }
     printf("\n\nLine matched: ");
     for(i=0; i<4; ++i)printf("%s,",bfield[i]);
     printf("%s\n\n",bfield[4]);
     matchfile=fopen("tmp.dat","w+");
     tm=0;
     for(i=1; i<=4; ++i)
     {     fseek(namefile,0L,SEEK_SET);
          printf("CODE %d: ",i);
          while(fgets(line,400,namefile)!=NULL)
          {     setfields(line,field);
               if(stricmp(field[i],bfield[i])==0)
               {     sl=strlen(field[0]);
                    fwrite(&sl,1,4,matchfile);
                    fwrite(field[0],1,sl,matchfile);
                    printf("%s ",field[0]);
                    ++tm;
               }
          }
          printf("\n");
     }
     dm=0;
     fseek(matchfile,0L,SEEK_SET);
     mname=(char (*)[50])calloc(tm,50);
     in=(int *)calloc(tm,sizeof(int));
     for(i=0; i<tm; ++i)
     {     fread(&sl,1,4,matchfile);
          fread(tname,1,sl,matchfile);
          tname[sl]='\0';
          for(j=0; j<dm; ++j)
          {     if(stricmp(mname[j],tname)==0)
               {     ++in[j];
                    break;
               }
          }
          if(j>=dm)
          {     strcpy(mname[dm],tname);
               ++in[j];
               ++dm;
          }
     }
     fclose(matchfile);
     fclose(namefile);
     unlink("tmp.dat");

     for(i=0; (i==0 || sw) && i<dm; ++i)
     {     sw=0;
          for(j=0; j<dm-i; ++j)
          {     if(in[j]<in[j+1])
               {     strcpy(tname,mname[j+1]);
                    strcpy(mname[j+1],mname[j]);
                    strcpy(mname[j],tname);
                    t=in[j+1];
                    in[j+1]=in[j];
                    in[j]=t;
                    sw=1;
               }
          }
     }
     printf("\n\nmatched               probability\n");
     for(i=0; i<dm; ++i)
     {     in[i]=((in[i]*100)/4);
          printf("%-20s  %d.%02d\n",mname[i],in[i]/100,in[i]%100);
     }
}

void setfields(char *line,char *field[5])
{     int i;

     field[0]=strtok(line,",");
     for(i=1; i<5; ++i)field[i]=strtok(NULL,",");
     return;
}

int stricmp(char *s,char *t)
{     while(*s!='\0' && toupper(*s++)==toupper(*t++));
     return(*s-*t);
}
0
 

Author Comment

by:korsila
Comment Utility
Imladris,
I think it was my mistake, I changed the code using "PFE"-prgramer's file editor and then when I compiled it in unix it compliant as above ..however, todaY I used "pico" trying to update the code and I have found the mistake which is ^^^^^ after int i; like this...

int i;^^^^^^^^^^
I have deleted it and it looks ok now..compilable...but the output seems incorrect for some reason.I will check it out again and wil lets you know as soon as posiible..!!

many thanks...and sorry about my mistake (as you know I am always clumsy with programing :(

Korsila
0
 

Author Comment

by:korsila
Comment Utility
Dear Imladris,
i will try to copy the output and paste it here...but here is an example of the mistake that your program does:

firstLY, it returns the wrong line:
AMORE, AMORE, AMORE, AMAR,AMAR

it supposes to be
SMITH,SMIT, SMIT,SMAT,SNAT

secoondly, it gave all mismatches which are not involed with SMITH at all...

in surname matches shopuld be in colums in each code...like this:

code1        code2        code3              code4
SMIT         SMIT         SMITH              SMIT
SMITH        SMITH        SMITHE             SMITE
                          SMITHEE           SMITH
                                           SMITHE
                                           SMITHEE


lastly, the miscaluation of problablity:
for example it return

matched    problability
AMAR         674.50%
ENAM         224.75%

etc...

p.s. how could AMAR and ENAM (for exmaple) matched with SMITH....???? and give high probs ...??

anyway, hope you could figure out how it went wrong...!!!!

I might give you some data to test with...!!!!


many thanks for your time..am realy appreciated as usual..!!
Korsila

0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
HMMmmm. It works correctly for me for smith and smithe with the datafile listed in the original question. I also tried adding the listed AMORE line, and it still works. Do you find that working correctly as well or not?

If it does, can you make it fail on small (postable) sample datafile? Remember to list what name was being searched for.
0
 

Author Comment

by:korsila
Comment Utility
Dear Imladris,
Ah that was a smaple of datfile..now am working with a real data which is bigger and contained more surnames...
from your question:
***Do you find that working correctly as well or not?
No I don't find it works correctly...the thing is I am at home and cann't copy the output file from the screen and post it here...will do it when I get a chance at work...

I will post the output and datafile which I got, to you as soon as possible...

kORSILA



0
 

Author Comment

by:korsila
Comment Utility
here is what your program calculate the prob. and return the surnames which matched "SMITH" from my real data:matched               probability
CHMBERLAIN            1109.00
SAICE                 688.25
SCABERD               640.00
SCEAL                 497.50
AMORE                 470.00
SCOOFIELD             354.00
AWMAN                 306.00
SCUSE                 193.25
ANDARRAY              179.50
HEMAN                 81.75
SKYDMOR               53.25
SCALON                33.00
SCARCEBROOK           31.50
SCETON                28.00
AMES                  22.75
AMBER                 22.00
AMCOATES              21.75
SCADDAN               20.00
AMSBURY               18.25
ANDEAN                17.50
SCEAVINTON            0.50
SCEX                  0.50
SCOOLES               0.50
SCOOLY                0.50
SCOONS                0.50
SCOUELL               0.50
SCOUGHCROFT           0.50
SCOURFIELD            0.50
SCOWIN                0.50
SKYDMORE              0.50
SKYER                 0.50
SKYFFE                0.50
SKYLBECKE             0.50
SKYLL                 0.50
SKYNGLE               0.50
SKYPPE                0.50
SKYVINGTON            0.50
ANDOVER               0.50
ANGUISH               0.50
ANTTON                0.50
SAWIN                 0.25
SAWINGS               0.25
SCHINDLER             0.25
SCHINNER              0.25
HEMANS                0.25
HEMANWAY              0.25
HEMAWAYE              0.25
HEMBERRY              0.25
HEMBERY               0.25
HEMESLEY              0.25
HEMESLY               0.25
HEMLING               0.25
HEMLOCKE              0.25
HEMMUS                0.25
HEMSBY                0.25
HEMSHALL              0.25
OUMPHRY               0.25
YOMAN                 0.25
YOMANS                0.25
ANDARS                0.25
ANDARSON              0.25
ANDROSON              0.25
ANDRUA                0.25
ANGURE                0.25
ANGUS                 0.25
ANGUSH                0.25
ANLYE                 0.25
CHNERS                0.25
IZZOD                 0.25


0
 

Author Comment

by:korsila
Comment Utility
here I run your code again , against the sample of data which i have given above

and here is the output:
----------------------------------
Enter name to search for:
smith


Line matched: SMITE,SMITE,SMITE,SMAT,SNAT


CODE 1: SMITCH SMITE SMITHE SMITHELS
CODE 2: SMITCH SMITE SMITHE
CODE 3: SMIT SMITE
CODE 4: SMIT SMITE SMITH SMITHE SMITHEE


matched               probability
SMITE                 1.50
SMITHE                1.00
SMITCH                0.50
SMITHELS              0.25
SMITHEE               0.25
-----------------------------------------------
here it could proove your code performs incorrectly:

firstly: it should return:
SMITH,SMIT,SMIT,SMATH,SNAT

secondly, the matches should retun:

code1      code2   code3     code4
SMIT       SMIT    SMITH     SMIT
SMITH      SMITH   SMITHE    SMITE
                  SMITHEE   SMITH
                            SMITHE
                            SMITHEE



0
 

Author Comment

by:korsila
Comment Utility
here I run your code again , against the sample of data which i have given above

and here is the output:
----------------------------------
Enter name to search for:
smith


Line matched: SMITE,SMITE,SMITE,SMAT,SNAT


CODE 1: SMITCH SMITE SMITHE SMITHELS
CODE 2: SMITCH SMITE SMITHE
CODE 3: SMIT SMITE
CODE 4: SMIT SMITE SMITH SMITHE SMITHEE


matched               probability
SMITE                 1.50
SMITHE                1.00
SMITCH                0.50
SMITHELS              0.25
SMITHEE               0.25
-----------------------------------------------
here it could proove your code performs incorrectly:

firstly: it should return:
SMITH,SMIT,SMIT,SMATH,SNAT

secondly, the matches should retun:

code1      code2     code3         code4
SMIT       SMIT      SMITH         SMIT
SMITH      SMITH     SMITHE        SMITE
 -           -       SMITHEE       SMITH
                                   SMITHE
                                   SMITHEE


as surnames in code1 , 2 ..code4 should be printed out as in colums (not in row)..also the matches are incorrect...

prob. calculation is wrong as well
, should return something  like this:
prob. value should be in the range of 0-1
surname matched     problability
SMITH                 1.0
SMIT                  0.75
SMITHE                0.5
SMITHEE               0.5
SMITE                 0.25


can you show me your results:?
anyway,  you think the problem would come from the space in datafile or not??? as I can guess since we always have this kind of problem..!!!

many thanks,
Korsila



0
 

Author Comment

by:korsila
Comment Utility
ok , here is a new datafile

base.dat

SMADLEY,SMADLEY,SMADLEY,SMADL,SNADLY
SMAELS,SMAELS,SMAEL,SMALS,SNALS
SMAIL,SMAIL,SMAIL,SMAL,SNAL
SMAILE,SMAILE,SMAILE,SMAL,SNAL
SMAILES,SMAILES,SMAILE,SMALAS,SNALS
SMAILL,SMAILL,SMAILL,SMALL,SNALL
SMAILS,SMAILS,SMAIL,SMALS,SNALS
SMAL,SMAL,SMAL,SMAL,SNAL
SMALAY,SMALAY,SMALAY,SMAL,SNALAY
SMALBENT,SMALBENT,SMALBENT,SMALBANT,SNALBAN
SMALBONES,SMALBONES,SMALBONE,SMALBANAS,SNALBANS
SMALBROKE,SMALBROKE,SMALBROKE,SMALBRAK,SNALBRAC
SMALBROOK,SMALBROOK,SMALBROOK,SMALBRAK,SNALBRAC
SMALCOMB,SMALCOMB,SMALCOMB,SMALCAMB,SNALCANB
SMALDRIDGE,SMALDRIDGE,SMALDRIDGE,SMALDRADG,SNALDRAG
SMALE,SMALE,SMALE,SMAL,SNAL
SMALEBENT,SMALEBENT,SMALEBENT,SMALABANT,SNALABAN
SMALEBENTE,SMALEBENTE,SMALEBENTE,SMALABANT,SNALABANT
SMALEBONES,SMALEBONES,SMALEBONE,SMALABANAS,SNALABANS
SMALECOMBE,SMALECOMBE,SMALECOMBE,SMALACAMB,SNALACANB
SMALEFIELD,SMALEFIELD,SMALEFIELD,SMALAFALD,SNALAFALD
SMALEMAN,SMALEMAN,SMALEMAN,SMALAMAN,SNALANAN
SMALEPAGE,SMALEPAGE,SMALEPAGE,SMALAPAG,SNALAPAG
SMALEPEECE,SMALEPEECE,SMALEPEECE,SMALAPAC,SNALAPAS
SMALES,SMALES,SMALE,SMALAS,SNALS
SMALEWOOD,SMALEOOD,SMALEWOOD,SMALAWAD,SNALAWAD
SMALEWOODE,SMALEOODE,SMALEWOODE,SMALAWAD,SNALAWAD
SMALEY,SMALEY,SMALEY,SMAL,SNALY
SMALFEILD,SMALFEILD,SMALFEILD,SMALFALD,SNALFALD
SMALFIELD,SMALFIELD,SMALFIELD,SMALFALD,SNALFALD
SMALHAM,SMALAM,SMALHAM,SMALHAM,SNALHAN
SMALIN,SMALIN,SMALIN,SMALAN,SNALAN
SMALING,SMALING,SMALING,SMALANG,SNALANG
SMALL,SMALL,SMALL,SMALL,SNALL
SMALLACOMBE,SMALLACOMBE,SMALLACOMBE,SMALLACAMB,SNALLACANB
SMALLAM,SMALLAM,SMALLAM,SMALLAM,SNALLAN
SMALLAY,SMALLAY,SMALLAY,SMALL,SNALLAY
SMALLBENT,SMALLBENT,SMALLBENT,SMALLBANT,SNALLBAN
SMALLBONE,SMALLBONE,SMALLBONE,SMALLBAN,SNALLBAN
SMALLBONES,SMALLBONES,SMALLBONE,SMALLBANAS,SNALLBANS
SMALLBROKE,SMALLBROKE,SMALLBROKE,SMALLBRAK,SNALLBRAC
SMALLBROOKE,SMALLBROOKE,SMALLBROOKE,SMALLBRAK,SNALLBRAC
SMALLBUN,SMALLBUN,SMALLBUN,SMALLBAN,SNALLBAN
SMALLCOM,SMALLCOM,SMALLCOM,SMALLCAM,SNALLCAN
SMALLCOMB,SMALLCOMB,SMALLCOMB,SMALLCAMB,SNALLCANB
SMALLCOMBE,SMALLCOMBE,SMALLCOMBE,SMALLCAMB,SNALLCANB
SMALLDRIDGE,SMALLDRIDGE,SMALLDRIDGE,SMALLDRADG,SNALLDRAG
SMALLE,SMALLE,SMALLE,SMALL,SNALL
SMALLEDG,SMALLEDG,SMALLEDG,SMALLADG,SNALLAG
SMALLEDGE,SMALLEDGE,SMALLEDGE,SMALLADG,SNALLAG
SMALLEN,SMALLEN,SMALLEN,SMALLAN,SNALLAN
SMALLER,SMALLER,SMALLER,SMALLAR,SNALLAR
SMALLES,SMALLES,SMALLE,SMALLAS,SNALLS
SMALLEY,SMALLEY,SMALLEY,SMALL,SNALLY
SMALLEYE,SMALLEYE,SMALLEYE,SMALL,SNALLAY
SMALLFEILD,SMALLFEILD,SMALLFEILD,SMALLFALD,SNALLFALD
SMALLFIELD,SMALLFIELD,SMALLFIELD,SMALLFALD,SNALLFALD
SMALLMAN,SMALLMAN,SMALLMAN,SMALLMAN,SNALLNAN
SMALLPAGE,SMALLPAGE,SMALLPAGE,SMALLPAG,SNALLPAG
SMALLPEACE,SMALLPEACE,SMALLPEACE,SMALLPAC,SNALLPAS
SMALLPEECE,SMALLPEECE,SMALLPEECE,SMALLPAC,SNALLPAS
SMALLPIECE,SMALLPIECE,SMALLPIECE,SMALLPAC,SNALLPAS
SMALLRIDGE,SMALLRIDGE,SMALLRIDGE,SMALLRADG,SNALLRAG
SMALLS,SMALLS,SMALL,SMALLS,SNALLS
SMALLSHAW,SMALLSA,SMALLSHAW,SMALLSHAW,SNALLSHAW
SMALLSHAWE,SMALLSAE,SMALLSHAWE,SMALLSHAW,SNALLSHAW
SMALLSHOE,SMALLSOE,SMALLSHOE,SMALLSH,SNALLSH
SMALLUM,SMALLUM,SMALLUM,SMALLAM,SNALLAN
SMALLWOOD,SMALLOOD,SMALLWOOD,SMALLWAD,SNALLWAD
SMALLWOODE,SMALLOODE,SMALLWOODE,SMALLWAD,SNALLWAD
SMALLWOODS,SMALLOODS,SMALLWOOD,SMALLWADS,SNALLWADS
SMALLY,SMALLY,SMALLY,SMALL,SNALLY
SMALMAN,SMALMAN,SMALMAN,SMALMAN,SNALNAN
SMALPAGE,SMALPAGE,SMALPAGE,SMALPAG,SNALPAG
SMALPEICE,SMALPEICE,SMALPEICE,SMALPAC,SNALPAS
SMALPISE,SMALPISE,SMALPISE,SMALPAS,SNALPAS
SMALRIDGE,SMALRIDGE,SMALRIDGE,SMALRADG,SNALRAG
SMALRIGE,SMALRIGE,SMALRIGE,SMALRAG,SNALRAG
SMALS,SMALS,SMAL,SMALS,SNALS
SMALSHAW,SMALSA,SMALSHAW,SMALSHAW,SNALSHAW
SMALSHAWE,SMALSAE,SMALSHAWE,SMALSHAW,SNALSHAW
SMALSHEW,SMALSE,SMALSHEW,SMALSHAW,SNALSHAW
SMALSHOE,SMALSOE,SMALSHOE,SMALSH,SNALSH
SMALSHOW,SMALSO,SMALSHOW,SMALSHAW,SNALSHAW
SMALWOOD,SMALOOD,SMALWOOD,SMALWAD,SNALWAD
SMALWOODE,SMALOODE,SMALWOODE,SMALWAD,SNALWAD
SMALY,SMALY,SMALY,SMAL,SNALY
SMALYE,SMALYE,SMALYE,SMAL,SNALY
SMARDON,SMARDON,SMARDON,SMARDAN,SNARDAN
SMARFITT,SMARFITT,SMARFITT,SMARFATT,SNARFATT
SMARFOOTE,SMARFOOTE,SMARFOOTE,SMARFAT,SNARFAT
SMARK,SMARK,SMARK,SMARK,SNARC
SMARLEY,SMARLEY,SMARLEY,SMARL,SNARLY
SMARLLEY,SMARLLEY,SMARLLEY,SMARLL,SNARLLY
SMARLY,SMARLY,SMARLY,SMARL,SNARLY
SMART,SMART,SMART,SMART,SNART
SMARTE,SMARTE,SMARTE,SMART,SNART
SMARTFOOT,SMARTFOOT,SMARTFOOT,SMARTFAT,SNARTFAT
SMARTFOOTE,SMARTFOOTE,SMARTFOOTE,SMARTFAT,SNARTFAT
SMARTH,SMART,SMARTH,SMARTH,SNART
SMARTHWAITE,SMARTAITE,SMARTHWAITE,SMARTHWAT,SNARTWAT
SMARTS,SMARTS,SMART,SMARTS,SNARTS
SMARTT,SMARTT,SMARTT,SMARTT,SNARTT
SMATHAM,SMATAM,SMATHAM,SMATHAM,SNATAN
SMATHORST,SMATORST,SMATHORST,SMATHARST,SNATARST
SMATHURST,SMATURST,SMATHURST,SMATHARST,SNATARST
SMAULEMAN,SMAULEMAN,SMAULEMAN,SMALAMAN,SNALANAN
SMAULY,SMAULY,SMAULY,SMAL,SNALY
SMAWFIELD,SMAFIELD,SMAWFIELD,SMAWFALD,SNAWFALD
SMAWLEY,SMALEY,SMAWLEY,SMAWL,SNAWLY
SMAWSHAW,SMASA,SMAWSHAW,SMAWSHAW,SNAWSHAW
SMAYLES,SMAYLES,SMAYLE,SMALAS,SNALS
SMEAD,SMEAD,SMEAD,SMAD,SNAD
SMEADE,SMEADE,SMEADE,SMAD,SNAD
SMEADLE,SMEADLE,SMEADLE,SMADL,SNADL
SMEADLEY,SMEADLEY,SMEADLEY,SMADL,SNADLY
SMEADLY,SMEADLY,SMEADLY,SMADL,SNADLY
SMEAL,SMEAL,SMEAL,SMAL,SNAL
SMEALE,SMEALE,SMEALE,SMAL,SNAL
SMEALL,SMEALL,SMEALL,SMALL,SNALL
SMEAR,SMEAR,SMEAR,SMAR,SNAR
SMEARS,SMEARS,SMEAR,SMARS,SNARS
SMEATH,SMEAT,SMEATH,SMATH,SNAT
SMEATHAM,SMEATAM,SMEATHAM,SMATHAM,SNATAN
SMEATHEM,SMEATEM,SMEATHEM,SMATHAM,SNATAN
SMEATHMAN,SMEATMAN,SMEATHMAN,SMATHMAN,SNATNAN
SMEATON,SMEATON,SMEATON,SMATAN,SNATAN
SMED,SMED,SMED,SMAD,SNAD
SMEDDALE,SMEDDALE,SMEDDALE,SMADDAL,SNADDAL
SMEDDERS,SMEDDERS,SMEDDER,SMADDARS,SNADDARS
SMEDDLE,SMEDDLE,SMEDDLE,SMADDL,SNADDL
SMEDDLEY,SMEDDLEY,SMEDDLEY,SMADDL,SNADDLY
SMEDE,SMEDE,SMEDE,SMAD,SNAD
SMEDELY,SMEDELY,SMEDELY,SMADAL,SNADALY
SMEDES,SMEDES,SMEDE,SMADAS,SNADS
SMEDEY,SMEDEY,SMEDEY,SMAD,SNADY
SMEDLAY,SMEDLAY,SMEDLAY,SMADL,SNADLAY
SMEDLE,SMEDLE,SMEDLE,SMADL,SNADL
SMEDLEE,SMEDLEE,SMEDLEE,SMADL,SNADLY
SMEDLEY,SMEDLEY,SMEDLEY,SMADL,SNADLY
SMEDLY,SMEDLY,SMEDLY,SMADL,SNADLY
SMEDMOR,SMEDMOR,SMEDMOR,SMADMAR,SNADNAR
SMEDMORE,SMEDMORE,SMEDMORE,SMADMAR,SNADNAR
SMEED,SMEED,SMEED,SMAD,SNAD
SMEEDE,SMEEDE,SMEEDE,SMAD,SNAD
SMEEDLEY,SMEEDLEY,SMEEDLEY,SMADL,SNADLY
SMEER,SMEER,SMEER,SMAR,SNAR
SMEERS,SMEERS,SMEER,SMARS,SNARS
SMEETH,SMEET,SMEETH,SMATH,SNAT
SMEETHAM,SMEETAM,SMEETHAM,SMATHAM,SNATAN
SMEETHE,SMEETE,SMEETHE,SMATH,SNAT
SMEETHES,SMEETES,SMEETHE,SMATHAS,SNATS
SMEETHS,SMEETS,SMEETH,SMATHS,SNATS
SMEETIN,SMEETIN,SMEETIN,SMATAN,SNATAN
SMEETING,SMEETING,SMEETING,SMATANG,SNATANG
SMEETON,SMEETON,SMEETON,SMATAN,SNATAN
SMEITH,SMEIT,SMEITH,SMATH,SNAT
SMEITHES,SMEITES,SMEITHE,SMATHAS,SNATS
SMEITON,SMEITON,SMEITON,SMATAN,SNATAN
SMELE,SMELE,SMELE,SMAL,SNAL
SMELING,SMELING,SMELING,SMALANG,SNALANG
SMELL,SMELL,SMELL,SMALL,SNALL
SMELLIE,SMELLIE,SMELLIE,SMALL,SNALLY
SMELLING,SMELLING,SMELLING,SMALLANG,SNALLANG
SMELLINGE,SMELLINGE,SMELLINGE,SMALLANG,SNALLANG
SMELLMAN,SMELLMAN,SMELLMAN,SMALLMAN,SNALLNAN
SMELY,SMELY,SMELY,SMAL,SNALY
SMERDON,SMERDON,SMERDON,SMARDAN,SNARDAN
SMERSALL,SMERSALL,SMERSALL,SMARSALL,SNARSALL
SMERT,SMERT,SMERT,SMART,SNART
SMETH,SMET,SMETH,SMATH,SNAT
SMETHAM,SMETAM,SMETHAM,SMATHAM,SNATAN
SMETHAN,SMETAN,SMETHAN,SMATHAN,SNATAN
SMETHE,SMETE,SMETHE,SMATH,SNAT
SMETHELLS,SMETELLS,SMETHELL,SMATHALLS,SNATALLS
SMETHELS,SMETELS,SMETHEL,SMATHALS,SNATALS
SMETHEM,SMETEM,SMETHEM,SMATHAM,SNATAN
SMETHER,SMETER,SMETHER,SMATHAR,SNATAR
SMETHERAM,SMETERAM,SMETHERAM,SMATHARAM,SNATARAN
SMETHERGAILE,SMETERGAILE,SMETHERGAILE,SMATHARGAL,SNATARGAL
SMETHERST,SMETERST,SMETHERST,SMATHARST,SNATARST
SMETHERSTE,SMETERSTE,SMETHERSTE,SMATHARST,SNATARST
SMETHES,SMETES,SMETHE,SMATHAS,SNATS
SMETHHURST,SMETHURST,SMETHHURST,SMATHHARST,SNATHARST
SMETHIRST,SMETIRST,SMETHIRST,SMATHARST,SNATARST
SMETHLEY,SMETLEY,SMETHLEY,SMATHL,SNATLY
SMETHLY,SMETLY,SMETHLY,SMATHL,SNATLY
SMETHMAN,SMETMAN,SMETHMAN,SMATHMAN,SNATNAN
SMETHOM,SMETOM,SMETHOM,SMATHAM,SNATAN
SMETHREM,SMETREM,SMETHREM,SMATHRAM,SNATRAN
SMETHSON,SMETSON,SMETHSON,SMATHSAN,SNATSAN
SMETHUM,SMETUM,SMETHUM,SMATHAM,SNATAN
SMETHURST,SMETURST,SMETHURST,SMATHARST,SNATARST
SMETON,SMETON,SMETON,SMATAN,SNATAN
SMETT,SMETT,SMETT,SMATT,SNATT
SMETTEM,SMETTEM,SMETTEM,SMATTAM,SNATTAN
SMETTEN,SMETTEN,SMETTEN,SMATTAN,SNATTAN
SMETTON,SMETTON,SMETTON,SMATTAN,SNATTAN
SMEWING,SMEING,SMEWING,SMAWANG,SNAWANG
SMIDDY,SMIDDY,SMIDDY,SMADD,SNADDY
SMIDES,SMIDES,SMIDE,SMADAS,SNADS
SMIDIES,SMIDIES,SMIDIE,SMADAS,SNADAS
SMIDIS,SMIDIS,SMIDI,SMADAS,SNADAS
SMIDY,SMIDY,SMIDY,SMAD,SNADY
SMIELS,SMIELS,SMIEL,SMALS,SNALS
SMIETH,SMIET,SMIETH,SMATH,SNAT
SMIGHT,SMIGT,SMIGHT,SMAGHT,SNAGHT
SMIGHTON,SMIGTON,SMIGHTON,SMAGHTAN,SNAGHTAN
SMIGTH,SMIGT,SMIGTH,SMAGTH,SNAGT
SMIH,SMI,SMIH,SMAH,SNAH
SMILE,SMILE,SMILE,SMAL,SNAL
SMILER,SMILER,SMILER,SMALAR,SNALAR
SMILES,SMILES,SMILE,SMALAS,SNALS
SMILEY,SMILEY,SMILEY,SMAL,SNALY
SMILIE,SMILIE,SMILIE,SMAL,SNALY
SMILLEY,SMILLEY,SMILLEY,SMALL,SNALLY
SMILLIE,SMILLIE,SMILLIE,SMALL,SNALLY
SMILY,SMILY,SMILY,SMAL,SNALY
SMIRFITT,SMIRFITT,SMIRFITT,SMARFATT,SNARFATT
SMIRK,SMIRK,SMIRK,SMARK,SNARC
SMIRKE,SMIRKE,SMIRKE,SMARK,SNARC
SMIRTHWAITE,SMIRTAITE,SMIRTHWAITE,SMARTHWAT,SNARTWAT
SMISON,SMISON,SMISON,SMASAN,SNASAN
SMISSEN,SMISSEN,SMISSEN,SMASSAN,SNASSAN
SMISSON,SMISSON,SMISSON,SMASSAN,SNASSAN
SMISSONS,SMISSONS,SMISSON,SMASSANS,SNASSANS
SMIT,SMIT,SMIT,SMAT,SNAT
SMITCH,SMITC,SMITCH,SMATCH,SNATCH
SMITE,SMITE,SMITE,SMAT,SNAT
SMITEN,SMITEN,SMITEN,SMATAN,SNATAN
SMITER,SMITER,SMITER,SMATAR,SNATAR
SMITH,SMIT,SMITH,SMATH,SNAT
SMITHALS,SMITALS,SMITHAL,SMATHALS,SNATALS
SMITHAM,SMITAM,SMITHAM,SMATHAM,SNATAN
SMITHARD,SMITARD,SMITHARD,SMATHARD,SNATARD
SMITHARST,SMITARST,SMITHARST,SMATHARST,SNATARST
SMITHE,SMITE,SMITHE,SMATH,SNAT
SMITHEE,SMITEE,SMITHEE,SMATH,SNATY
SMITHELS,SMITELS,SMITHEL,SMATHALS,SNATALS
SMITHEM,SMITEM,SMITHEM,SMATHAM,SNATAN
SMITHEMAN,SMITEMAN,SMITHEMAN,SMATHAMAN,SNATANAN
SMITHEN,SMITEN,SMITHEN,SMATHAN,SNATAN
SMITHER,SMITER,SMITHER,SMATHAR,SNATAR
SMITHERAM,SMITERAM,SMITHERAM,SMATHARAM,SNATARAN
SMITHERD,SMITERD,SMITHERD,SMATHARD,SNATARD
SMITHERGALE,SMITERGALE,SMITHERGALE,SMATHARGAL,SNATARGAL
SMITHERGAYLE,SMITERGAYLE,SMITHERGAYLE,SMATHARGAL,SNATARGAL
SMITHERGELL,SMITERGELL,SMITHERGELL,SMATHARGALL,SNATARGALL
SMITHERGILL,SMITERGILL,SMITHERGILL,SMATHARGALL,SNATARGALL
SMITHERM,SMITERM,SMITHERM,SMATHARM,SNATAR
SMITHERMAN,SMITERMAN,SMITHERMAN,SMATHARMAN,SNATARAN
SMITHERS,SMITERS,SMITHER,SMATHARS,SNATARS
SMITHES,SMITES,SMITHE,SMATHAS,SNATS
SMITHEY,SMITEY,SMITHEY,SMATH,SNATY
SMITHEYMAN,SMITEYMAN,SMITHEYMAN,SMATHAMAN,SNATANAN
SMITHEYS,SMITEYS,SMITHEY,SMATHAS,SNATAS
SMITHHURST,SMITHURST,SMITHHURST,SMATHHARST,SNATHARST
SMITHICK,SMITICK,SMITHICK,SMATHACK,SNATAC
SMITHICKE,SMITICKE,SMITHICKE,SMATHACK,SNATAC
SMITHIE,SMITIE,SMITHIE,SMATH,SNATY
SMITHIEMAN,SMITIEMAN,SMITHIEMAN,SMATHAMAN,SNATANAN
SMITHIER,SMITIER,SMITHIER,SMATHAR,SNATAR
SMITHIES,SMITIES,SMITHIE,SMATHAS,SNATAS
SMITHILLS,SMITILLS,SMITHILL,SMATHALLS,SNATALLS
SMITHIMAN,SMITIMAN,SMITHIMAN,SMATHAMAN,SNATANAN
SMITHIN,SMITIN,SMITHIN,SMATHAN,SNATAN
SMITHISON,SMITISON,SMITHISON,SMATHASAN,SNATASAN
SMITHMAN,SMITMAN,SMITHMAN,SMATHMAN,SNATNAN
SMITHOM,SMITOM,SMITHOM,SMATHAM,SNATAN
SMITHS,SMITS,SMITH,SMATHS,SNATS
SMITHSON,SMITSON,SMITHSON,SMATHSAN,SNATSAN
SMITHSONNE,SMITSONNE,SMITHSONNE,SMATHSANN,SNATSANN
SMITHSONS,SMITSONS,SMITHSON,SMATHSANS,SNATSANS
SMITHSTONE,SMITSTONE,SMITHSTONE,SMATHSTAN,SNATSTAN
SMITHURST,SMITURST,SMITHURST,SMATHARST,SNATARST
SMITHWAIT,SMITAIT,SMITHWAIT,SMATHWAT,SNATWAT
SMITHWAITE,SMITAITE,SMITHWAITE,SMATHWAT,SNATWAT
SMITHWHITE,SMITITE,SMITHWHITE,SMATHWHAT,SNATWHAT
SMITHWICK,SMITICK,SMITHWICK,SMATHWACK,SNATWAC
SMITHY,SMITY,SMITHY,SMATH,SNATY
SMITHYES,SMITYES,SMITHYE,SMATHAS,SNATAS
SMITHYMAN,SMITYMAN,SMITHYMAN,SMATHAMAN,SNATANAN
SMITHYS,SMITYS,SMITHY,SMATHAS,SNATAS
SMITON,SMITON,SMITON,SMATAN,SNATAN
SMITOR,SMITOR,SMITOR,SMATAR,SNATAR
SMITS,SMITS,SMIT,SMATS,SNATS
SMITT,SMITT,SMITT,SMATT,SNATT
SMITTE,SMITTE,SMITTE,SMATT,SNATT
SMITTEN,SMITTEN,SMITTEN,SMATTAN,SNATTAN
SMITTH,SMITT,SMITTH,SMATTH,SNATT
SMITTON,SMITTON,SMITTON,SMATTAN,SNATTAN
SMITTS,SMITTS,SMITT,SMATTS,SNATTS
SMITY,SMITY,SMITY,SMAT,SNATY
SMIYTH,SMIYT,SMIYTH,SMATH,SNAT
SMOAK,SMOAK,SMOAK,SMAK,SNAC
SMOAKAM,SMOAKAM,SMOAKAM,SMAKAM,SNACAN
SMOAKEM,SMOAKEM,SMOAKEM,SMAKAM,SNACAN
SMOAKER,SMOAKER,SMOAKER,SMAKAR,SNACAR
SMOAKHAM,SMOAKAM,SMOAKHAM,SMAKHAM,SNACHAN
SMOAKUM,SMOAKUM,SMOAKUM,SMAKAM,SNACAN
SMOCUM,SMOCUM,SMOCUM,SMACAM,SNACAN
SMOKAM,SMOKAM,SMOKAM,SMAKAM,SNACAN
SMOKE,SMOKE,SMOKE,SMAK,SNAC
SMOKEHAM,SMOKEAM,SMOKEHAM,SMAKAHAM,SNACAHAN
SMOKER,SMOKER,SMOKER,SMAKAR,SNACAR
SMOLER,SMOLER,SMOLER,SMALAR,SNALAR
SMOLEY,SMOLEY,SMOLEY,SMAL,SNALY
SMOLL,SMOLL,SMOLL,SMALL,SNALL
SMOLTE,SMOLTE,SMOLTE,SMALT,SNALT
SMOOKER,SMOOKER,SMOOKER,SMAKAR,SNACAR
SMOOT,SMOOT,SMOOT,SMAT,SNAT
SMOOTHE,SMOOTE,SMOOTHE,SMATH,SNAT
SMOOTHEY,SMOOTEY,SMOOTHEY,SMATH,SNATY
SMOOTHY,SMOOTY,SMOOTHY,SMATH,SNATY
SMORFIT,SMORFIT,SMORFIT,SMARFAT,SNARFAT
SMORFITT,SMORFITT,SMORFITT,SMARFATT,SNARFATT
SMORTHWAIT,SMORTAIT,SMORTHWAIT,SMARTHWAT,SNARTWAT
SMORTHWAITE,SMORTAITE,SMORTHWAITE,SMARTHWAT,SNARTWAT
SMORTHWAYTE,SMORTAYTE,SMORTHWAYTE,SMARTHWAT,SNARTWAT
SMORTWHAIT,SMORTAIT,SMORTWHAIT,SMARTWHAT,SNARTWHAT
SMOTE,SMOTE,SMOTE,SMAT,SNAT
SMOTON,SMOTON,SMOTON,SMATAN,SNATAN
SMOUGHTON,SMOUGTON,SMOUGHTON,SMAGHTAN,SNAGHTAN
SMOULT,SMOULT,SMOULT,SMALT,SNALT
SMOUT,SMOUT,SMOUT,SMAT,SNAT
SMOUTE,SMOUTE,SMOUTE,SMAT,SNAT
SMOUTEN,SMOUTEN,SMOUTEN,SMATAN,SNATAN
SMOUTON,SMOUTON,SMOUTON,SMATAN,SNATAN
SMOUTS,SMOUTS,SMOUT,SMATS,SNATS
SMOUTT,SMOUTT,SMOUTT,SMATT,SNATT
SMOWTON,SMOTON,SMOWTON,SMAWTAN,SNAWTAN
SMTH,SMT,SMTH,SMTH,SNT
SMTHE,SMTE,SMTHE,SMTH,SNT
SMUIN,SMUIN,SMUIN,SMAN,SNAN
SMUING,SMUING,SMUING,SMANG,SNANG
SMULLEN,SMULLEN,SMULLEN,SMALLAN,SNALLAN
SMULLON,SMULLON,SMULLON,SMALLAN,SNALLAN
SMURFIT,SMURFIT,SMURFIT,SMARFAT,SNARFAT
SMURFITT,SMURFITT,SMURFITT,SMARFATT,SNARFATT
SMURFOOT,SMURFOOT,SMURFOOT,SMARFAT,SNARFAT
SMURPHET,SMURPET,SMURPHET,SMARPHAT,SNARFAT
SMURTHWAITE,SMURTAITE,SMURTHWAITE,SMARTHWAT,SNARTWAT
SMUTHE,SMUTE,SMUTHE,SMATH,SNAT
SMYE,SMYE,SMYE,SM,SNY
SMYLES,SMYLES,SMYLE,SMALAS,SNALS
SMYLEY,SMYLEY,SMYLEY,SMAL,SNALY
SMYLIE,SMYLIE,SMYLIE,SMAL,SNALY
SMYLY,SMYLY,SMYLY,SMAL,SNALY
SMYTEN,SMYTEN,SMYTEN,SMATAN,SNATAN
SMYTER,SMYTER,SMYTER,SMATAR,SNATAR
SMYTH,SMYT,SMYTH,SMATH,SNAT
SMYTHWINDHAM,SMYTINDAM,SMYTHWINDHAM,SMATHWANDHAM,SNATWANDHAN
SMYTHE,SMYTE,SMYTHE,SMATH,SNAT
SMYTHEMAN,SMYTEMAN,SMYTHEMAN,SMATHAMAN,SNATANAN
SMYTHER,SMYTER,SMYTHER,SMATHAR,SNATAR
SMYTHERGILL,SMYTERGILL,SMYTHERGILL,SMATHARGALL,SNATARGALL
SMYTHERMAN,SMYTERMAN,SMYTHERMAN,SMATHARMAN,SNATARAN
SMYTHERS,SMYTERS,SMYTHER,SMATHARS,SNATARS
SMYTHES,SMYTES,SMYTHE,SMATHAS,SNATS
SMYTHICK,SMYTICK,SMYTHICK,SMATHACK,SNATAC
SMYTHIES,SMYTIES,SMYTHIE,SMATHAS,SNATAS
SMYTHIMAN,SMYTIMAN,SMYTHIMAN,SMATHAMAN,SNATANAN
SMYTHMAN,SMYTMAN,SMYTHMAN,SMATHMAN,SNATNAN
SMYTHS,SMYTS,SMYTH,SMATHS,SNATS
SMYTHSON,SMYTSON,SMYTHSON,SMATHSAN,SNATSAN
SMYTHWEEKE,SMYTEEKE,SMYTHWEEKE,SMATHWAK,SNATWAC
SMYTHYMAN,SMYTYMAN,SMYTHYMAN,SMATHAMAN,SNATANAN
SMYTON,SMYTON,SMYTON,SMATAN,SNATAN
SMYTTON,SMYTTON,SMYTTON,SMATTAN,SNATTAN
SNACKSTON,SNACKSTON,SNACKSTON,SNACKSTAN,SNACSTAN
SNADAN,SNADAN,SNADAN,SNADAN,SNADAN
SNADDEN,SNADDEN,SNADDEN,SNADDAN,SNADDAN
SNADDON,SNADDON,SNADDON,SNADDAN,SNADDAN
SNADE,SNADE,SNADE,SNAD,SNAD
SNADEN,SNADEN,SNADEN,SNADAN,SNADAN
SNADON,SNADON,SNADON,SNADAN,SNADAN
SNAG,SNAG,SNAG,SNAG,SNAG
SNAGG,SNAGG,SNAGG,SNAGG,SNAGG
SNAID,SNAID,SNAID,SNAD,SNAD
SNAIL,SNAIL,SNAIL,SNAL,SNAL
SNAILAM,SNAILAM,SNAILAM,SNALAM,SNALAN
SNAILE,SNAILE,SNAILE,SNAL,SNAL
SNAILHAM,SNAILAM,SNAILHAM,SNALHAM,SNALHAN
SNAILOM,SNAILOM,SNAILOM,SNALAM,SNALAN
SNAILUM,SNAILUM,SNAILUM,SNALAM,SNALAN
SNAIPE,SNAIPE,SNAIPE,SNAP,SNAP
SNAIRE,SNAIRE,SNAIRE,SNAR,SNAR
SNAIRY,SNAIRY,SNAIRY,SNAR,SNARY
SNAITH,SNAIT,SNAITH,SNATH,SNAT
SNALAM,SNALAM,SNALAM,SNALAM,SNALAN
SNALEM,SNALEM,SNALEM,SNALAM,SNALAN
SNALGROVE,SNALGROVE,SNALGROVE,SNALGRAV,SNALGRAV
SNALL,SNALL,SNALL,SNALL,SNALL
SNALON,SNALON,SNALON,SNALAN,SNALAN
SNAP,SNAP,SNAP,SNAP,SNAP
SNAPE,SNAPE,SNAPE,SNAP,SNAP
SNAPES,SNAPES,SNAPE,SNAPAS,SNAPS
SNAPP,SNAPP,SNAPP,SNAPP,SNAPP
SNAPS,SNAPS,SNAP,SNAPS,SNAPS
SNAR,SNAR,SNAR,SNAR,SNAR
SNARE,SNARE,SNARE,SNAR,SNAR
SNAREY,SNAREY,SNAREY,SNAR,SNARY
SNARIE,SNARIE,SNARIE,SNAR,SNARY
SNARR,SNARR,SNARR,SNARR,SNARR
SNARRE,SNARRE,SNARRE,SNARR,SNARR
SNARRIE,SNARRIE,SNARRIE,SNARR,SNARRY
SNARRY,SNARRY,SNARRY,SNARR,SNARRY
SNART,SNART,SNART,SNART,SNART
SNARY,SNARY,SNARY,SNAR,SNARY
SNARYE,SNARYE,SNARYE,SNAR,SNARY
SNASDALE,SNASDALE,SNASDALE,SNASDAL,SNASDAL
SNASDELL,SNASDELL,SNASDELL,SNASDALL,SNASDALL
SNASHAL,SNASAL,SNASHAL,SNASHAL,SNASHAL
SNASHALL,SNASALL,SNASHALL,SNASHALL,SNASHALL
SNASHEL,SNASEL,SNASHEL,SNASHAL,SNASHAL
SNASHELL,SNASELL,SNASHELL,SNASHALL,SNASHALL
SNAT,SNAT,SNAT,SNAT,SNAT
SNATE,SNATE,SNATE,SNAT,SNAT
SNATH,SNAT,SNATH,SNATH,SNAT
SNATHE,SNATE,SNATHE,SNATH,SNAT
SNATON,SNATON,SNATON,SNATAN,SNATAN
SNATT,SNATT,SNATT,SNATT,SNATT
SNAUDEN,SNAUDEN,SNAUDEN,SNADAN,SNADAN
SNAW,SNA,SNAW,SNAW,SNAW
SNAWBALL,SNABALL,SNAWBALL,SNAWBALL,SNAWBALL
SNAWDALL,SNADALL,SNAWDALL,SNAWDALL,SNAWDALL
SNAWDAN,SNADAN,SNAWDAN,SNAWDAN,SNAWDAN
SNAWDEN,SNADEN,SNAWDEN,SNAWDAN,SNAWDAN
SNAWDON,SNADON,SNAWDON,SNAWDAN,SNAWDAN
SNAWE,SNAE,SNAWE,SNAW,SNAW
SNAWSDAYLE,SNASDAYLE,SNAWSDAYLE,SNAWSDAL,SNAWSDAL
SNAWSDELL,SNASDELL,SNAWSDELL,SNAWSDALL,SNAWSDALL
SNAXTON,SNAXTON,SNAXTON,SNAXTAN,SNAXTAN
SNAYDON,SNAYDON,SNAYDON,SNADAN,SNADAN
SNAYLAM,SNAYLAM,SNAYLAM,SNALAM,SNALAN
SNAYLOM,SNAYLOM,SNAYLOM,SNALAM,SNALAN
SNAYLUM,SNAYLUM,SNAYLUM,SNALAM,SNALAN
SNAYTH,SNAYT,SNAYTH,SNATH,SNAT
SNEAD,SNEAD,SNEAD,SNAD,SNAD
SNEADE,SNEADE,SNEADE,SNAD,SNAD
SNEADER,SNEADER,SNEADER,SNADAR,SNADAR
SNEALL,SNEALL,SNEALL,SNALL,SNALL
SNEAP,SNEAP,SNEAP,SNAP,SNAP
SNEAPE,SNEAPE,SNEAPE,SNAP,SNAP
SNEAPS,SNEAPS,SNEAP,SNAPS,SNAPS
SNEARY,SNEARY,SNEARY,SNAR,SNARY
SNEASBY,SNEASBY,SNEASBY,SNASB,SNASBY
SNEATH,SNEAT,SNEATH,SNATH,SNAT
SNEATHE,SNEATE,SNEATHE,SNATH,SNAT
SNEATON,SNEATON,SNEATON,SNATAN,SNATAN
SNEAYD,SNEAYD,SNEAYD,SNAD,SNAD
SNED,SNED,SNED,SNAD,SNAD
SNEDALL,SNEDALL,SNEDALL,SNADALL,SNADALL
SNEDDEN,SNEDDEN,SNEDDEN,SNADDAN,SNADDAN
SNEDDIN,SNEDDIN,SNEDDIN,SNADDAN,SNADDAN
SNEDDLE,SNEDDLE,SNEDDLE,SNADDL,SNADDL
SNEDDON,SNEDDON,SNEDDON,SNADDAN,SNADDAN
SNEDE,SNEDE,SNEDE,SNAD,SNAD
SNEDON,SNEDON,SNEDON,SNADAN,SNADAN
SNEED,SNEED,SNEED,SNAD,SNAD
SNEESBY,SNEESBY,SNEESBY,SNASB,SNASBY
SNEETH,SNEET,SNEETH,SNATH,SNAT
SNEEZBY,SNEEZBY,SNEEZBY,SNAZB,SNASBY
SNEITH,SNEIT,SNEITH,SNATH,SNAT
SNEL,SNEL,SNEL,SNAL,SNAL
SNELAM,SNELAM,SNELAM,SNALAM,SNALAN
SNELE,SNELE,SNELE,SNAL,SNAL
SNELEN,SNELEN,SNELEN,SNALAN,SNALAN
SNELGAR,SNELGAR,SNELGAR,SNALGAR,SNALGAR
SNELGARE,SNELGARE,SNELGARE,SNALGAR,SNALGAR
SNELGER,SNELGER,SNELGER,SNALGAR,SNALGAR
SNELGORE,SNELGORE,SNELGORE,SNALGAR,SNALGAR
SNELGRAVE,SNELGRAVE,SNELGRAVE,SNALGRAV,SNALGRAV
SNELGROUE,SNELGROUE,SNELGROUE,SNALGR,SNALGR
SNELGROVE,SNELGROVE,SNELGROVE,SNALGRAV,SNALGRAV
SNELGROW,SNELGRO,SNELGROW,SNALGRAW,SNALGRAW
SNELGROWE,SNELGROE,SNELGROWE,SNALGRAW,SNALGRAW
SNELIN,SNELIN,SNELIN,SNALAN,SNALAN
SNELING,SNELING,SNELING,SNALANG,SNALANG
SNELINGE,SNELINGE,SNELINGE,SNALANG,SNALANG
SNELL,SNELL,SNELL,SNALL,SNALL
SNELLAND,SNELLAND,SNELLAND,SNALLAND,SNALLAN
SNELLE,SNELLE,SNELLE,SNALL,SNALL
SNELLEN,SNELLEN,SNELLEN,SNALLAN,SNALLAN
SNELLGAR,SNELLGAR,SNELLGAR,SNALLGAR,SNALLGAR
SNELLGRAVE,SNELLGRAVE,SNELLGRAVE,SNALLGRAV,SNALLGRAV
SNELLGROE,SNELLGROE,SNELLGROE,SNALLGR,SNALLGR
SNELLGROVE,SNELLGROVE,SNELLGROVE,SNALLGRAV,SNALLGRAV
SNELLIN,SNELLIN,SNELLIN,SNALLAN,SNALLAN
SNELLING,SNELLING,SNELLING,SNALLANG,SNALLANG
SNELLINGE,SNELLINGE,SNELLINGE,SNALLANG,SNALLANG
SNELLINGS,SNELLINGS,SNELLING,SNALLANGS,SNALLANGS
SNELLOCK,SNELLOCK,SNELLOCK,SNALLACK,SNALLAC
SNELLOCKE,SNELLOCKE,SNELLOCKE,SNALLACK,SNALLAC
SNELLON,SNELLON,SNELLON,SNALLAN,SNALLAN
SNELLS,SNELLS,SNELL,SNALLS,SNALLS
SNELLSON,SNELLSON,SNELLSON,SNALLSAN,SNALLSAN
SNELSON,SNELSON,SNELSON,SNALSAN,SNALSAN
SNELSTON,SNELSTON,SNELSTON,SNALSTAN,SNALSTAN
SNEP,SNEP,SNEP,SNAP,SNAP
SNEPE,SNEPE,SNEPE,SNAP,SNAP
SNEPP,SNEPP,SNEPP,SNAPP,SNAPP
SNER,SNER,SNER,SNAR,SNAR
SNERY,SNERY,SNERY,SNAR,SNARY
SNESBY,SNESBY,SNESBY,SNASB,SNASBY
SNESDELL,SNESDELL,SNESDELL,SNASDALL,SNASDALL
SNETH,SNET,SNETH,SNATH,SNAT
SNETON,SNETON,SNETON,SNATAN,SNATAN
SNETT,SNETT,SNETT,SNATT,SNATT
SNEWKE,SNEKE,SNEWKE,SNAWK,SNAWC
SNEYD,SNEYD,SNEYD,SNAD,SNAD
SNIDAL,SNIDAL,SNIDAL,SNADAL,SNADAL
SNIDALE,SNIDALE,SNIDALE,SNADAL,SNADAL
SNIDALL,SNIDALL,SNIDALL,SNADALL,SNADALL
SNIDDER,SNIDDER,SNIDDER,SNADDAR,SNADDAR
SNIDER,SNIDER,SNIDER,SNADAR,SNADAR
SNIGE,SNIGE,SNIGE,SNAG,SNAG
SNIGG,SNIGG,SNIGG,SNAGG,SNAGG
SNIGGS,SNIGGS,SNIGG,SNAGGS,SNAGGS
SNILLING,SNILLING,SNILLING,SNALLANG,SNALLANG
SNIP,SNIP,SNIP,SNAP,SNAP
SNIPE,SNIPE,SNIPE,SNAP,SNAP
SNIPP,SNIPP,SNIPP,SNAPP,SNAPP
SNISBY,SNISBY,SNISBY,SNASB,SNASBY
SNITH,SNIT,SNITH,SNATH,SNAT
SNOAD,SNOAD,SNOAD,SNAD,SNAD
SNOADES,SNOADES,SNOADE,SNADAS,SNADS
SNOADS,SNOADS,SNOAD,SNADS,SNADS
SNOCK,SNOCK,SNOCK,SNACK,SNAC
SNOCKE,SNOCKE,SNOCKE,SNACK,SNAC
SNODALL,SNODALL,SNODALL,SNADALL,SNADALL
SNODDEN,SNODDEN,SNODDEN,SNADDAN,SNADDAN
SNODDEY,SNODDEY,SNODDEY,SNADD,SNADDY
SNODDON,SNODDON,SNODDON,SNADDAN,SNADDAN
SNODDY,SNODDY,SNODDY,SNADD,SNADDY
SNODE,SNODE,SNODE,SNAD,SNAD
SNODEN,SNODEN,SNODEN,SNADAN,SNADAN
SNODIN,SNODIN,SNODIN,SNADAN,SNADAN
SNODON,SNODON,SNODON,SNADAN,SNADAN
SNODY,SNODY,SNODY,SNAD,SNADY
SNOKE,SNOKE,SNOKE,SNAK,SNAC
SNOKES,SNOKES,SNOKE,SNAKAS,SNACS
SNOLL,SNOLL,SNOLL,SNALL,SNALL
SNOOCKE,SNOOCKE,SNOOCKE,SNACK,SNAC
SNOOD,SNOOD,SNOOD,SNAD,SNAD
SNOOK,SNOOK,SNOOK,SNAK,SNAC
SNOOKE,SNOOKE,SNOOKE,SNAK,SNAC
SNOOKES,SNOOKES,SNOOKE,SNAKAS,SNACS
SNOOKS,SNOOKS,SNOOK,SNAKS,SNACS
SNOOTTE,SNOOTTE,SNOOTTE,SNATT,SNATT
SNORTON,SNORTON,SNORTON,SNARTAN,SNARTAN
SNOTHE,SNOTE,SNOTHE,SNATH,SNAT
SNOUCH,SNOUC,SNOUCH,SNACH,SNACH
SNOUDEN,SNOUDEN,SNOUDEN,SNADAN,SNADAN
SNOUKE,SNOUKE,SNOUKE,SNAK,SNAC
SNOW,SNO,SNOW,SNAW,SNAW
SNOWBAL,SNOBAL,SNOWBAL,SNAWBAL,SNAWBAL
SNOWBALL,SNOBALL,SNOWBALL,SNAWBALL,SNAWBALL
SNOWDAL,SNODAL,SNOWDAL,SNAWDAL,SNAWDAL
SNOWDALE,SNODALE,SNOWDALE,SNAWDAL,SNAWDAL
SNOWDALL,SNODALL,SNOWDALL,SNAWDALL,SNAWDALL
SNOWDAN,SNODAN,SNOWDAN,SNAWDAN,SNAWDAN
SNOWDELL,SNODELL,SNOWDELL,SNAWDALL,SNAWDALL
SNOWDEN,SNODEN,SNOWDEN,SNAWDAN,SNAWDAN
SNOWDIN,SNODIN,SNOWDIN,SNAWDAN,SNAWDAN
SNOWDING,SNODING,SNOWDING,SNAWDANG,SNAWDANG
SNOWDLE,SNODLE,SNOWDLE,SNAWDL,SNAWDL
SNOWDON,SNODON,SNOWDON,SNAWDAN,SNAWDAN
SNOWE,SNOE,SNOWE,SNAW,SNAW
SNOWKE,SNOKE,SNOWKE,SNAWK,SNAWC
SNOWLAND,SNOLAND,SNOWLAND,SNAWLAND,SNAWLAN
SNOWLING,SNOLING,SNOWLING,SNAWLANG,SNAWLANG
SNOWSEL,SNOSEL,SNOWSEL,SNAWSAL,SNAWSAL
SNOWSELL,SNOSELL,SNOWSELL,SNAWSALL,SNAWSALL
SNOWSHELL,SNOSELL,SNOWSHELL,SNAWSHALL,SNAWSHALL
SNOWSHILL,SNOSILL,SNOWSHILL,SNAWSHALL,SNAWSHALL
SNOWSILL,SNOSILL,SNOWSILL,SNAWSALL,SNAWSALL
SNOWSWELL,SNOSELL,SNOWSWELL,SNAWSWALL,SNAWSWALL
SNOXALL,SNOXALL,SNOXALL,SNAXALL,SNAXALL
SNOXEL,SNOXEL,SNOXEL,SNAXAL,SNAXAL
SNOXELL,SNOXELL,SNOXELL,SNAXALL,SNAXALL
SNUCKE,SNUCKE,SNUCKE,SNACK,SNAC
SNUDDEN,SNUDDEN,SNUDDEN,SNADDAN,SNADDAN
SNUDDON,SNUDDON,SNUDDON,SNADDAN,SNADDAN
SNUDEN,SNUDEN,SNUDEN,SNADAN,SNADAN
SNUGG,SNUGG,SNUGG,SNAGG,SNAGG
SNUGGS,SNUGGS,SNUGG,SNAGGS,SNAGGS
SNUGS,SNUGS,SNUG,SNAGS,SNAGS
SNUK,SNUK,SNUK,SNAK,SNAC
SNUKE,SNUKE,SNUKE,SNAK,SNAC
SNUTCH,SNUTC,SNUTCH,SNATCH,SNATCH
SNUTT,SNUTT,SNUTT,SNATT,SNATT
SNYDAILE,SNYDAILE,SNYDAILE,SNADAL,SNADAL
SNYDALE,SNYDALE,SNYDALE,SNADAL,SNADAL
SNYDALL,SNYDALL,SNYDALL,SNADALL,SNADALL
SNYDEN,SNYDEN,SNYDEN,SNADAN,SNADAN
SNYDER,SNYDER,SNYDER,SNADAR,SNADAR
SNYPE,SNYPE,SNYPE,SNAP,SNAP
SNYPPE,SNYPPE,SNYPPE,SNAPP,SNAPP

and here is the output when test with this data:

Enter name to search for:
smith


Line matched: SMITE,SMITE,SMITE,SMAT,SNAT


CODE 1: SMATHAM SMATHORST SMATHURST SMETH SMETHAM SMETHAN SMETHE SMETHELLS SMETHELS SMETHEM SMETHER SMETHERAM SMETHERGAILE SMETHERST SMETHERSTE SMETHES SMETHHURST SMETHIRST SMETHLEY SMETHLY SMETHMAN SMETHOM SMETHREM SMETHSON SMETHUM SMETHURST SMETON SMETT SMETTEM SMETTEN SMETTON SMIDES SMILE SMILER SMILES SMILEY SMITCH SMITE SMITHE SMITHELS SMITHERS SMITHEYS SMITHS SMITHY SMITS SMITT SMITTH SMITY SMOTE SMOTON SMOWTON SMUTHE SMYTEN SMYTER SMYTH SMYTHWINDHAM SMYTHE SMYTHEMAN SMYTHER SMYTHERGILL SMYTHERMAN SMYTHERS SMYTHES SMYTHICK SMYTHIES SMYTHIMAN SMYTHMAN SMYTHS SMYTHSON SMYTHWEEKE SMYTHYMAN SMYTON SMYTTON SNIDAL SNIDALE SNIDALL SNIDDER SNIDER SNIGE SNIGG SNIGGS SNILLING SNIP SNIPE SNIPP SNISBY SNITH
CODE 2: SMATHAM SMATHORST SMATHURST SMETH SMETHAM SMETHAN SMETHE SMETHELLS SMETHELS SMETHEM SMETHER SMETHERAM SMETHERGAILE SMETHERST SMETHERSTE SMETHES SMETHHURST SMETHIRST SMETHLEY SMETHLY SMETHMAN SMETHOM SMETHREM SMETHSON SMETHUM SMETHURST SMETON SMETT SMETTEM SMETTEN SMETTON SMIDES SMILE SMILER SMILES SMILEY SMITE SMITH SMITHS SMITT SMITTS SMITY SMOTE SMOTON SMUTHE SMYTEN SMYTER SMYTH SMYTHWINDHAM SMYTHE SMYTHEMAN SMYTHER SMYTHERGILL SMYTHERMAN SMYTHERS SMYTHES SMYTHICK SMYTHIES SMYTHIMAN SMYTHMAN SMYTHS SMYTHSON SMYTHWEEKE SMYTHYMAN SMYTON SMYTTON SNIDAL SNIDALE SNIDALL SNIDDER SNIDER SNIGE SNIGG SNIGGS SNILLING SNIP SNIPE SNIPP SNISBY SNITH
CODE 3: SMAIL SMAILE SMAL SMALAY SMALE SMALEY SMALY SMALYE SMAULY SMEAD SMEADE SMEAL SMEALE SMEAR SMED SMEDE SMEDEY SMEED SMEEDE SMEER SMEETHS SMELE SMELY SMETHSON SMIDY SMIH SMILE SMILEY SMILIE SMILY SMIT SMITE SMITHS SMITHSON SMITHSONNE SMITHSONS SMITHSTONE SMITTS SMITY SMOAK SMOKE SMOLEY SMOOT SMOTE SMOUT SMOUTE SMUIN SMYLEY SMYLIE SMYLY SMYTHS SMYTHSON SNACKSTON SNADAN SNADDEN SNADDON SNADE SNADEN SNADON SNAG SNAGG SNAID SNAIL SNAILAM SNAILE SNAILHAM SNAILOM SNAILUM SNAIPE SNAIRE SNAIRY SNAITH SNALAM SNALEM SNALGROVE SNALL SNALON SNAP SNAPE SNAPES SNAPP SNAPS SNAR SNARE SNAREY SNARIE SNARR SNARRE SNARRIE SNARRY SNART SNARY SNARYE SNASDALE SNASDELL SNASHAL SNASHALL SNASHEL SNASHELL SNAT SNATE SNATH SNATHE SNATON SNATT SNAUDEN SNAW SNAWBALL SNAWDALL SNAWDAN SNAWDEN SNAWDON SNAWE SNAWSDAYLE SNAWSDELL SNAXTON SNAYDON SNAYLAM SNAYLOM SNAYLUM SNAYTH SNEAD SNEADE SNEADER SNEALL SNEAP SNEAPE SNEAPS SNEARY SNEASBY SNEATH SNEATHE SNEATON SNEAYD SNED SNEDALL SNEDDEN SNEDDIN SNEDDLE SNEDDON SNEDE SNEDON SNEED SNEESBY SNEETH SNEEZBY SNEITH SNEL SNELAM SNELE SNELEN SNELGAR SNELGARE SNELGER SNELGORE SNELGRAVE SNELGROUE SNELGROVE SNELGROW SNELGROWE SNELIN SNELING SNELINGE SNELL SNELLAND SNELLE SNELLEN SNELLGAR SNELLGRAVE SNELLGROE SNELLGROVE SNELLIN SNELLING SNELLINGE SNELLINGS SNELLOCK SNELLOCKE SNELLON SNELLS SNELLSON SNELSON SNELSTON SNEP SNEPE SNEPP SNER SNERY SNESBY SNESDELL SNETH SNETON SNETT SNEWKE SNEYD SNIDAL SNIDALE SNIDALL SNIDDER SNIDER SNIGE SNIGG SNIGGS SNILLING SNIP SNIPE SNIPP SNISBY SNITH SNOAD SNOADES SNOADS SNOCK SNOCKE SNODALL SNODDEN SNODDEY SNODDON SNODDY SNODE SNODEN SNODIN SNODON SNODY SNOKE SNOKES SNOLL SNOOCKE SNOOD SNOOK SNOOKE SNOOKES SNOOKS SNOOTTE SNORTON SNOTHE SNOUCH SNOUDEN SNOUKE SNOW SNOWBAL SNOWBALL SNOWDAL SNOWDALE SNOWDALL SNOWDAN SNOWDELL SNOWDEN SNOWDIN SNOWDING SNOWDLE SNOWDON SNOWE SNOWKE SNOWLAND SNOWLING SNOWSEL SNOWSELL SNOWSHELL SNOWSHILL SNOWSILL SNOWSWELL SNOXALL SNOXEL SNOXELL SNUCKE SNUDDEN SNUDDON SNUDEN SNUGG SNUGGS SNUGS SNUK SNUKE SNUTCH SNUTT SNYDAILE SNYDALE SNYDALL SNYDEN SNYDER SNYPE SNYPPE
CODE 4: SMAIL SMAILE SMAL SMALE SMEAD SMEADE SMEAL SMEALE SMEAR SMEATH SMED SMEDE SMEED SMEEDE SMEER SMEETH SMEETHE SMEITH SMELE SMETH SMETHE SMIETH SMIH SMILE SMIT SMITE SMITH SMITHE SMIYTH SMOAK SMOKE SMOOT SMOOTHE SMOTE SMOUT SMOUTE SMUIN SMUTHE SMYTH SMYTHE SNADE SNAG SNAID SNAIL SNAILE SNAIPE SNAIRE SNAITH SNAP SNAPE SNAR SNARE SNAT SNATE SNATH SNATHE SNAW SNAWE SNAYTH SNEAD SNEADE SNEAP SNEAPE SNEATH SNEATHE SNEAYD SNED SNEDE SNEED SNEETH SNEITH SNEL SNELE SNEP SNEPE SNER SNETH SNEYD SNIGE SNIP SNIPE SNITH SNOAD SNOCK SNOCKE SNODE SNOKE SNOOCKE SNOOD SNOOK SNOOKE SNOTHE SNOUKE SNOW SNOWE SNUCKE SNUK SNUKE SNYPE


matched               probability
SMATHAM               58.75
SMEAD                 26.00
SMOWTON               19.25
SMIDES                16.00
SMAL                  2.75
SNUDDEN               1.75
SMAIL                 1.50
SMATHORST             1.00
SMEADE                1.00
SMEETHS               1.00
SMALE                 0.75
SMEER                 0.75
SNUDEN                0.75
SMAILE                0.50
SMALAY                0.50
SMIH                  0.50
SMOKE                 0.50
SNUCKE                0.50
SNUGG                 0.50
SNUK                  0.50
SNYPE                 0.50
SMALYE                0.25
SMIDY                 0.25
SNUGGS                0.25
SNUTCH                0.25
SNUTT                 0.25
SNYPPE                0.25
SMIYTH                0.25

------

could you find out the problem?
it still perform incorrectly...!!as my results above..!!

Korsila


0
 

Author Comment

by:korsila
Comment Utility
again lets make the question clearer:

for example
here is the datafile: (base.dat)
SMIT,SMIT,SMIT,SMAT,SNAT
SMITCH,SMITC,SMITC,SMATCH,SNATC
SMITE,SMITE,SMITE,SMAT,SNAT
SMITEN,SMITEN,SMITEN,SMATAN,SNATAN
SMITER,SMITER,SMITER,SMATAR,SNATAR
SMITH,SMIT,SMIT,SMATH,SNAT
SMITHALS,SMITALS,SMITAL,SMATHALS,SNATAL
SMITHAM,SMITAM,SMITAM,SMATHAM,SNATAN
SMITHARD,SMITARD,SMITARD,SMATHARD,SNATARD
SMITHARST,SMITARST,SMITARST,SMATHARST,SNATARST
SMITHE,SMITE,SMITE,SMATH,SNAT
SMITHEE,SMITEE,SMITEE,SMATH,SNAT
SMITHELS,SMITELS,SMITEL,SMATHALS,SNATAL
SMITHEM,SMITEM,SMITEM,SMATHAM,SNATAN
SMITHEMAN,SMITEMAN,SMITEMAN,SMATHAMAN,SNATANAN
SMITHEN,SMITEN,SMITEN,SMATHAN,SNATAN

entering surname:smith ---example
then the program will look at surname "smith" in datafile (base.dat) and then return this line:
SMITH,SMIT,SMIT,SMATH,SNAT -----Line6

**** your program failed to do this...


After that, the program will look at each code (code1, 2, 3 and code4) in Line6 and try to find other codes in other lines which generated the same code1, code2, code3 and code4 as Line6

forexample: from line 6
1st column, 2nd column, 3rd column, 4th column, 5th column
surname,      code1,      code2,      code3,     code4
SMITH,        SMIT,        SMIT,       SMATH,     SNAT
--------------
code1 = SMIT
code2 = SMIT
code3 = SMATH
code4 = SNAT

program will start looking up other lines in second, third, fourth, and fifth colums which have got the code1 = SMIT (second column), code2 =SMIT (third colum), code3 = SMATH (fourth column)and code4 =SNAT (fifth column) respectively then return only surname which matched with the name code in each column...

for example:

1)find "SMIT" for code1 in only second column of each line in data  and then return the surname which got SMIT in only second column ...here are the surnames matched in second column):
SMIT
SMITH

2)find "SMIT" for code2 in only thrid column of each line in data and then return the surname which got SMIT in third column,( here are the surnames matched in code2 or third column):

SMIT
SMITH

3)find "SMATH" for code3 in only fourth column of each line in data and then return the surnames which got SMATH in code3 or fourth column..here are the surnames matched in fourth column only):


SMITH
SMITHE
SMITHEE

4)find SNAT for code4 in only fifth column of each line in data and then return the surnames which got SNAT in code4 or fifth column ..here are the surnames matched in fifth column only):

SMIT
SMITE
SMITH
SMITHE
SMITHEE


and then program will generate out put like this:

SMITH,SMIT,SMIT,SMATH,SNAT --(Line Matched)

code1      code2    code3          code4
SMIT       SMIT     SMITH           SMIT
SMITH      SMITH    SMITHE          SMITE
 -          -        SMITHEE         SMITH
                        -            SMITHE
                        -            SMITHEE

then program will find the overlaping surname in each code and calculate the problability of overlaping by this formular: number of the same name appeared in each code/4
for example: SMIT appeared 3 times (in code1 (coulmn2),code 2 (column3), and 4 (column5))
3/4 = 0.75

SMITH =4/4 =1.0
SMITHE=2/4 =0.5
SMITHEE =2/4 =0.5
SMITE= 1/4 = 0.25

and then the program generates another output
like this:

surname matched     problability
SMITH                 1.0
SMIT                  0.75
SMITHE                0.5
SMITHEE               0.5
SMITE                 0.25


---------
Analysis confusion:)

the thing is that I think i made you confused with code1, code2, code3 , code4 with columns...
colum1        column2      column3    column4    column5
SMITH,        SMIT,        SMIT,       SMATH,     SNAT

1)find "SMIT" for code1 in coulumn2 only in each line from data and then return the surname which got SMIT in only second column ...here are the surnames matched in second column):
SMIT
SMITH

this results mean , the matches of code "SMIT" from only coulumn2 in each line...
surname, code1, code2, code3, code4
1      2    3   4     5
SMIT,SMIT,SMIT,SMAT,SNAT
SMITCH,SMITC,SMITC,SMATCH,SNATC
SMITE,SMITE,SMITE,SMAT,SNAT
SMITEN,SMITEN,SMITEN,SMATAN,SNATAN
SMITER,SMITER,SMITER,SMATAR,SNATAR
SMITH,SMIT,SMIT,SMATH,SNAT
SMITHALS,SMITALS,SMITAL,SMATHALS,SNATAL
SMITHAM,SMITAM,SMITAM,SMATHAM,SNATAN
SMITHARD,SMITARD,SMITARD,SMATHARD,SNATARD
SMITHARST,SMITARST,SMITARST,SMATHARST,SNATARST
SMITHE,SMITE,SMITE,SMATH,SNAT
SMITHEE,SMITEE,SMITEE,SMATH,SNAT
SMITHELS,SMITELS,SMITEL,SMATHALS,SNATAL
SMITHEM,SMITEM,SMITEM,SMATHAM,SNATAN
SMITHEMAN,SMITEMAN,SMITEMAN,SMATHAMAN,SNATANAN
SMITHEN,SMITEN,SMITEN,SMATHAN,SNATAN

datfile have 5 columns contained following format:
surname, code1, code2, code3, code4, code5

so I mean find the same code1 should mean find the same code1 in the same column which is in column 2 only, not looking for other columns for the name in code1...

similarly to code2 , looking the same name which appear in code2 in only column3....and so on...


hope it 's clearer...
I think I didn't make it clear...so your program seems to look for the same surname as in code1 in any columns and provide output...so that's why the outpput are incorect...

-----------


hope you understand what I would like to do now..!!!

many thaks for your time of reading /anylysing my question..
Korsila


0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
Well, that was interesting. The stricmp I wrote for you had a bug in it. But my program continued to work correctly because my program didn't use my stricmp, it used the one in the library. Once I renamed it, forcing the program to use mine, I got the same behaviour you do. It is now fixed. Here is the code:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void setfields(char *,char *[5]);
int  lstricmp(char *,char *);

void main()
{     int i,j,tm,sl,dm,*in,sw,t;
     char bline[400],line[400],name[100],*bfield[5],*field[5],(*mname)[50],tname[50];
     FILE *namefile,*matchfile;

     printf("Enter name to search for:\n");
     gets(name);
     namefile=fopen("base.dat","r+");
     while(fgets(bline,400,namefile)!=NULL)
     {     setfields(bline,bfield);
          if(lstricmp(bfield[0],name)==0)break;
     }
     if(lstricmp(bfield[0],name)!=0)
     {     printf("No match found\n");
          exit(1);
     }
     printf("\n\nLine matched: ");
     for(i=0; i<4; ++i)printf("%s,",bfield[i]);
     printf("%s\n\n",bfield[4]);
     matchfile=fopen("tmp.dat","w+");
     tm=0;
     for(i=1; i<=4; ++i)
     {     fseek(namefile,0L,SEEK_SET);
          printf("CODE %d: ",i);
          while(fgets(line,400,namefile)!=NULL)
          {     setfields(line,field);
               if(stricmp(field[i],bfield[i])==0)
               {     sl=strlen(field[0]);
                    fwrite(&sl,1,4,matchfile);
                    fwrite(field[0],1,sl,matchfile);
                    printf("%s ",field[0]);
                    ++tm;
               }
          }
          printf("\n");
     }
     dm=0;
     fseek(matchfile,0L,SEEK_SET);
     mname=(char (*)[50])calloc(tm,50);
     in=(int *)calloc(tm,sizeof(int));
     for(i=0; i<tm; ++i)
     {     fread(&sl,1,4,matchfile);
          fread(tname,1,sl,matchfile);
          tname[sl]='\0';
          for(j=0; j<dm; ++j)
          {     if(stricmp(mname[j],tname)==0)
               {     ++in[j];
                    break;
               }
          }
          if(j>=dm)
          {     strcpy(mname[dm],tname);
               ++in[j];
               ++dm;
          }
     }
     fclose(matchfile);
     fclose(namefile);
     unlink("tmp.dat");

     for(i=0; (i==0 || sw) && i<dm; ++i)
     {     sw=0;
          for(j=0; j<dm-i; ++j)
          {     if(in[j]<in[j+1])
               {     strcpy(tname,mname[j+1]);
                    strcpy(mname[j+1],mname[j]);
                    strcpy(mname[j],tname);
                    t=in[j+1];
                    in[j+1]=in[j];
                    in[j]=t;
                    sw=1;
               }
          }
     }
     printf("\n\nmatched               probability\n");
     for(i=0; i<dm; ++i)
     {     in[i]=((in[i]*100)/4);
          printf("%-20s  %d.%02d\n",mname[i],in[i]/100,in[i]%100);
     }
}

void setfields(char *line,char *field[5])
{     int i;

     field[0]=strtok(line,",");
     for(i=1; i<5; ++i)field[i]=strtok(NULL,",");
     return;
}

int lstricmp(char *s,char *t)
{     while(toupper(*s)==toupper(*t) && *s!='\0')
     {     ++s;
          ++t;
     }
     return(*s-*t);
}
0
 

Author Comment

by:korsila
Comment Utility
still got a problem when compiled:

/usr/ccs/bin/ld: Unsatisfied symbols:
   stricmp (code)

what should we fix?
0
 

Author Comment

by:korsila
Comment Utility
ah ha, you forgot to change
stricmp  to lstricmp at
if(stricmp(field[i],bfield[i])==0)
now the code is ok aafter compiled...
however, when I run the program, the output looks like this:

Enter name to search for:
smith


Line matched: SMITH,SMIT,SMITH,SMATH,SNAT


CODE 1:
CODE 2:
CODE 3:
CODE 4:


matched               probability

---------------------

it fails to return the matches, and prob. values?

any idea?

Korsila        

0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 16

Expert Comment

by:imladris
Comment Utility
You're right! I missed that one. I also missed another one (if(stricmp(mname[j],tname)==0)). If you didn't change that, I wouldn't expect the program to link. If you did, I don't see why it is failing. Let's start by trying to repost the code again. Here is my current code with the two changes:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void setfields(char *,char *[5]);
int  lstricmp(char *,char *);

void main()
{     int i,j,tm,sl,dm,*in,sw,t;
     char bline[400],line[400],name[100],*bfield[5],*field[5],(*mname)[50],tname[50];
     FILE *namefile,*matchfile;

     printf("Enter name to search for:\n");
     gets(name);
     namefile=fopen("base.dat","r+");
     while(fgets(bline,400,namefile)!=NULL)
     {     setfields(bline,bfield);
          if(lstricmp(bfield[0],name)==0)break;
     }
     if(lstricmp(bfield[0],name)!=0)
     {     printf("No match found\n");
          exit(1);
     }
     printf("\n\nLine matched: ");
     for(i=0; i<4; ++i)printf("%s,",bfield[i]);
     printf("%s\n\n",bfield[4]);
     matchfile=fopen("tmp.dat","w+");
     tm=0;
     for(i=1; i<=4; ++i)
     {     fseek(namefile,0L,SEEK_SET);
          printf("CODE %d: ",i);
          while(fgets(line,400,namefile)!=NULL)
          {     setfields(line,field);
               if(lstricmp(field[i],bfield[i])==0)
               {     sl=strlen(field[0]);
                    fwrite(&sl,1,4,matchfile);
                    fwrite(field[0],1,sl,matchfile);
                    printf("%s ",field[0]);
                    ++tm;
               }
          }
          printf("\n");
     }
     dm=0;
     fseek(matchfile,0L,SEEK_SET);
     mname=(char (*)[50])calloc(tm,50);
     in=(int *)calloc(tm,sizeof(int));
     for(i=0; i<tm; ++i)
     {     fread(&sl,1,4,matchfile);
          fread(tname,1,sl,matchfile);
          tname[sl]='\0';
          for(j=0; j<dm; ++j)
          {     if(lstricmp(mname[j],tname)==0)
               {     ++in[j];
                    break;
               }
          }
          if(j>=dm)
          {     strcpy(mname[dm],tname);
               ++in[j];
               ++dm;
          }
     }
     fclose(matchfile);
     fclose(namefile);
     unlink("tmp.dat");

     for(i=0; (i==0 || sw) && i<dm; ++i)
     {     sw=0;
          for(j=0; j<dm-i; ++j)
          {     if(in[j]<in[j+1])
               {     strcpy(tname,mname[j+1]);
                    strcpy(mname[j+1],mname[j]);
                    strcpy(mname[j],tname);
                    t=in[j+1];
                    in[j+1]=in[j];
                    in[j]=t;
                    sw=1;
               }
          }
     }
     printf("\n\nmatched               probability\n");
     for(i=0; i<dm; ++i)
     {     in[i]=((in[i]*100)/4);
          printf("%-20s  %d.%02d\n",mname[i],in[i]/100,in[i]%100);
     }
}

void setfields(char *line,char *field[5])
{     int i;

     field[0]=strtok(line,",");
     for(i=1; i<5; ++i)field[i]=strtok(NULL,",");
     return;
}

int lstricmp(char *s,char *t)
{     while(toupper(*s)==toupper(*t) && *s!='\0')
     {     ++s;
          ++t;
     }
     return(*s-*t);
}

0
 

Author Comment

by:korsila
Comment Utility
how come it did work with a real data but id didn't work with the sample data which i have given here....!!!
hmmmm interesting..

anyway lets me play with testing, to make sure there is nothing else I need to do...


many thanks again for your time and great help..
Korsila
0
 

Author Comment

by:korsila
Comment Utility
yes, I did change when I tested with my real data but when I tested with my smaple data I did not..that was why no output :(

anyway, I have forgoten I need to do a backward searching/matching as well...here what i would like you to add in the code...I know I always got other problems while you are helping me sorting out my questions..as you know I like a great program which can deal with many problems (my problems) and you are the only one who understand most of my problems and u can solve them out profesionally..!!!

well, here is the what i would like you to help (a bit)

when I search for "SNATS" the program returns "no match found"  but I want the program to search backward as well..like the program can look for any codes (code1, 2, 3, or 4) if there is any SNATS in any line, any collums..and then return the "the first column of each line which is "Surname"...

for example:

Enter name to saerch for:
SNATS

no surname found but cannonical name matched:

code4:SMEETHES,SMEETHS,SMEITHES
---------------

SINCE AS YOU can see from the sample data above there are 3 line in column 5 (represented code4) contained "snats"..
so the program should handle this problem as well...

here the 3 lines I mentioned:
SMEETHES,SMEETES,SMEETHE,SMATHAS,SNATS
SMEETHS,SMEETS,SMEETH,SMATHS,SNATS
SMEITHES,SMEITES,SMEITHE,SMATHAS,SNATS

-----------------

one last thing, can I change the code name:
code1 to soundex
code2 to phonex
code3 to nysiis
code4 to simplex

so the output should look like this:

soundex    phonex   nysiis        simplex
SMIT       SMIT     SMITH           SMIT
SMITH      SMITH    SMITHE          SMITE
-            -        SMITHEE         SMITH
                         -            SMITHE
                         -            SMITHEE


--------
or as a new problem solution (snats case)

simplex:SMEETHES,SMEETHS,SMEITHES



and that's it realy...nothing else I could argue with your code...it's almost perfect...!!

could you help me to do this again...!!!hope you got time for me..!!!

many thanks...and will wait for your quick response soon...

Korsila
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
Code names changed, and unmatched names show names that have matches in the encoded form.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void setfields(char *,char *[5]);
int  lstricmp(char *,char *);

char cname[4][10] = { "soundex", "phonex", "nysiis", "simplex" };

void main()
{     int i,j,tm,sl,dm,*in,sw,t;
     char bline[400],line[400],name[100],*bfield[5],*field[5],(*mname)[50],tname[50];
     FILE *namefile,*matchfile;

     printf("Enter name to search for:\n");
     gets(name);
     namefile=fopen("base.dat","r+");
     while(fgets(bline,400,namefile)!=NULL)
     {     setfields(bline,bfield);
          if(lstricmp(bfield[0],name)==0)break;
     }
     if(lstricmp(bfield[0],name)!=0)
     {     printf("No match found\n\nCanonical name matches:\n");
          for(i=1; i<=4; ++i)
          {     fseek(namefile,0L,SEEK_SET);
               printf("CODE %7s: ",cname[i-1]);
               while(fgets(line,400,namefile)!=NULL)
               {     setfields(line,field);
                    if(lstricmp(field[i],name)==0)printf("%s ",field[0]);
               }
               printf("\n");
          }
     }
     else
     {     printf("\n\nLine matched: ");
          for(i=0; i<4; ++i)printf("%s,",bfield[i]);
          printf("%s\n\n",bfield[4]);
          matchfile=fopen("tmp.dat","w+");
          tm=0;
          for(i=1; i<=4; ++i)
          {     fseek(namefile,0L,SEEK_SET);
               printf("CODE %7s: ",cname[i-1]);
               while(fgets(line,400,namefile)!=NULL)
               {     setfields(line,field);
                    if(lstricmp(field[i],bfield[i])==0)
                    {     sl=strlen(field[0]);
                         fwrite(&sl,1,4,matchfile);
                         fwrite(field[0],1,sl,matchfile);
                         printf("%s ",field[0]);
                         ++tm;
                    }
               }
               printf("\n");
          }
          dm=0;
          fseek(matchfile,0L,SEEK_SET);
          mname=(char (*)[50])calloc(tm,50);
          in=(int *)calloc(tm,sizeof(int));
          for(i=0; i<tm; ++i)
          {     fread(&sl,1,4,matchfile);
               fread(tname,1,sl,matchfile);
               tname[sl]='\0';
               for(j=0; j<dm; ++j)
               {     if(lstricmp(mname[j],tname)==0)
                    {     ++in[j];
                         break;
                    }
               }
               if(j>=dm)
               {     strcpy(mname[dm],tname);
                    ++in[j];
                    ++dm;
               }
          }
          fclose(matchfile);
          fclose(namefile);
          unlink("tmp.dat");

          for(i=0; (i==0 || sw) && i<dm; ++i)
          {     sw=0;
               for(j=0; j<dm-i; ++j)
               {     if(in[j]<in[j+1])
                    {     strcpy(tname,mname[j+1]);
                         strcpy(mname[j+1],mname[j]);
                         strcpy(mname[j],tname);
                         t=in[j+1];
                         in[j+1]=in[j];
                         in[j]=t;
                         sw=1;
                    }
               }
          }
          printf("\n\nmatched               probability\n");
          for(i=0; i<dm; ++i)
          {     in[i]=((in[i]*100)/4);
               printf("%-20s  %d.%02d\n",mname[i],in[i]/100,in[i]%100);
          }
     }
}

void setfields(char *line,char *field[5])
{     int i;

     field[0]=strtok(line,",\n");
     for(i=1; i<5; ++i)field[i]=strtok(NULL,",\n");
     return;
}

int lstricmp(char *s,char *t)
{     while(toupper(*s)==toupper(*t) && *s!='\0')
     {     ++s;
          ++t;
     }
     return(*s-*t);
}
0
 

Author Comment

by:korsila
Comment Utility
Dear Imladris, a million thank..the code looks great and it works almost perfect..but it didn't find any matches from simplex code:

for example:
when we enter "snats"
it supposed to return:

CODE simplex:SMEETHES, SMEETHS, SMEITHES

but it returns nothing apart from:
CODE Simplex:(nothing here)

at the beginning I thought it didn't work only with "snats" but also I ahve tested with any code name in simplex column (last column)but it didn't work with others code names neither-didn't find and return any surname macthes from simplex code...-it fails to find any matches from simplex code...

could you fix it out a bit? and that's it really , everything looks just great..!!!

once again,  am realy appreciated with your help...even you are terribly busy with other things...

Korsila
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
HMmm. With the code last posted, and using the original base.dat (which doesn't contain any SNATS entries), if I enter SNAT, it correctly comes up with

code simplex: SMIT SMITE SMITH SMITHE SMITHEE

what do you get for that case?
0
 

Author Comment

by:korsila
Comment Utility
here what I got when I run the code against original base.dat (the first small data above / without containing code name "snats")

Enter name to search for:
snats
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:

--------
and here whata I got when I tested against a new datafile which i gave you a big list of surname started with "S" (see above) and it contains name code "snats")

Enter name to search for:
snats
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:

------------

hope you could fix it out what went wrong?

many thanks..!
Korsila
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
Yes, I get nothing for the SNATS case against the original base.dat as well; and that is what one would expect, since there aren't any SNATS in there.

But what do you get if you enter SNAT?
0
 

Author Comment

by:korsila
Comment Utility
Dear Imladris,
I answered your questions and didn't get response from you for ages , so i came here to check and I found out that my reply didn't appear here... that's why I haven't heard anything from you...maybe the new site has been updated...

anyway, here is my answer of your question
what do you get if you enter SNAT?

here what i got:
Enter name to search for:
SNAT
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:

hope you could fix it...

many thanks,
Korsila



0
 

Author Comment

by:korsila
Comment Utility
i HAVE TESTED WITH A NEW data :base2.dat

SMEDMOR,SMEDMOR,SMEDMOR,SMADMAR,SNADNAR
SMEDMORE,SMEDMORE,SMEDMORE,SMADMAR,SNADNAR
SMEED,SMEED,SMEED,SMAD,SNAD
SMEEDE,SMEEDE,SMEEDE,SMAD,SNAD
SMEEDLEY,SMEEDLEY,SMEEDLEY,SMADL,SNADLY
SMEER,SMEER,SMEER,SMAR,SNAR
SMEERS,SMEERS,SMEER,SMARS,SNARS
SMEETH,SMEET,SMEETH,SMATH,SNAT
SMEETHAM,SMEETAM,SMEETHAM,SMATHAM,SNATAN
SMEETHE,SMEETE,SMEETHE,SMATH,SNAT
SMEETHES,SMEETES,SMEETHE,SMATHAS,SNATS
SMEETHS,SMEETS,SMEETH,SMATHS,SNATS
SMEETIN,SMEETIN,SMEETIN,SMATAN,SNATAN
SMEETING,SMEETING,SMEETING,SMATANG,SNATANG
SMEETON,SMEETON,SMEETON,SMATAN,SNATAN
SMEITH,SMEIT,SMEITH,SMATH,SNAT
SMEITHES,SMEITES,SMEITHE,SMATHAS,SNATS
SMEITON,SMEITON,SMEITON,SMATAN,SNATAN
SMELE,SMELE,SMELE,SMAL,SNAL
SMELING,SMELING,SMELING,SMALANG,SNALANG
SMELL,SMELL,SMELL,SMALL,SNALL
SMELLIE,SMELLIE,SMELLIE,SMALL,SNALLY
SMELLING,SMELLING,SMELLING,SMALLANG,SNALLANG
SMELLINGE,SMELLINGE,SMELLINGE,SMALLANG,SNALLANG
SMELLMAN,SMELLMAN,SMELLMAN,SMALLMAN,SNALLNAN
SMELY,SMELY,SMELY,SMAL,SNALY
SMERDON,SMERDON,SMERDON,SMARDAN,SNARDAN
SMERSALL,SMERSALL,SMERSALL,SMARSALL,SNARSALL
SMERT,SMERT,SMERT,SMART,SNART
SMETH,SMET,SMETH,SMATH,SNAT
SMETHAM,SMETAM,SMETHAM,SMATHAM,SNATAN
SMETHAN,SMETAN,SMETHAN,SMATHAN,SNATAN
SMETHE,SMETE,SMETHE,SMATH,SNAT
SMETHELLS,SMETELLS,SMETHELL,SMATHALLS,SNATALLS
SMETHELS,SMETELS,SMETHEL,SMATHALS,SNATALS
SMETHEM,SMETEM,SMETHEM,SMATHAM,SNATAN
SMETHER,SMETER,SMETHER,SMATHAR,SNATAR
SMETHERAM,SMETERAM,SMETHERAM,SMATHARAM,SNATARAN
SMETHERGAILE,SMETERGAILE,SMETHERGAILE,SMATHARGAL,SNATARGAL
SMETHERST,SMETERST,SMETHERST,SMATHARST,SNATARST
SMETHERSTE,SMETERSTE,SMETHERSTE,SMATHARST,SNATARST
SMETHES,SMETES,SMETHE,SMATHAS,SNATS
SMETHHURST,SMETHURST,SMETHHURST,SMATHHARST,SNATHARST
SMETHIRST,SMETIRST,SMETHIRST,SMATHARST,SNATARST
SMETHLEY,SMETLEY,SMETHLEY,SMATHL,SNATLY
SMETHLY,SMETLY,SMETHLY,SMATHL,SNATLY
SMETHMAN,SMETMAN,SMETHMAN,SMATHMAN,SNATNAN
SMETHOM,SMETOM,SMETHOM,SMATHAM,SNATAN
SMETHREM,SMETREM,SMETHREM,SMATHRAM,SNATRAN
SMETHSON,SMETSON,SMETHSON,SMATHSAN,SNATSAN
SMETHUM,SMETUM,SMETHUM,SMATHAM,SNATAN
SMETHURST,SMETURST,SMETHURST,SMATHARST,SNATARST
SMETON,SMETON,SMETON,SMATAN,SNATAN
SMETT,SMETT,SMETT,SMATT,SNATT
SMETTEM,SMETTEM,SMETTEM,SMATTAM,SNATTAN
SMETTEN,SMETTEN,SMETTEN,SMATTAN,SNATTAN
SMETTON,SMETTON,SMETTON,SMATTAN,SNATTAN
SMEWING,SMEING,SMEWING,SMAWANG,SNAWANG
SMIDDY,SMIDDY,SMIDDY,SMADD,SNADDY
SMIDES,SMIDES,SMIDE,SMADAS,SNADS
SMIDIES,SMIDIES,SMIDIE,SMADAS,SNADAS
SMIDIS,SMIDIS,SMIDI,SMADAS,SNADAS
SMIDY,SMIDY,SMIDY,SMAD,SNADY
SMIELS,SMIELS,SMIEL,SMALS,SNALS
SMIETH,SMIET,SMIETH,SMATH,SNAT
SMIGHT,SMIGT,SMIGHT,SMAGHT,SNAGHT
SMIGHTON,SMIGTON,SMIGHTON,SMAGHTAN,SNAGHTAN
SMIGTH,SMIGT,SMIGTH,SMAGTH,SNAGT
SMIH,SMI,SMIH,SMAH,SNAH
SMILE,SMILE,SMILE,SMAL,SNAL
SMILER,SMILER,SMILER,SMALAR,SNALAR
SMILES,SMILES,SMILE,SMALAS,SNALS
SMILEY,SMILEY,SMILEY,SMAL,SNALY
SMILIE,SMILIE,SMILIE,SMAL,SNALY
SMILLEY,SMILLEY,SMILLEY,SMALL,SNALLY
SMILLIE,SMILLIE,SMILLIE,SMALL,SNALLY
SMILY,SMILY,SMILY,SMAL,SNALY
SMIRFITT,SMIRFITT,SMIRFITT,SMARFATT,SNARFATT
SMIRK,SMIRK,SMIRK,SMARK,SNARC
SMIRKE,SMIRKE,SMIRKE,SMARK,SNARC
SMIRTHWAITE,SMIRTAITE,SMIRTHWAITE,SMARTHWAT,SNARTWAT
SMISON,SMISON,SMISON,SMASAN,SNASAN
SMISSEN,SMISSEN,SMISSEN,SMASSAN,SNASSAN
SMISSON,SMISSON,SMISSON,SMASSAN,SNASSAN
SMISSONS,SMISSONS,SMISSON,SMASSANS,SNASSANS
SMIT,SMIT,SMIT,SMAT,SNAT
SMITCH,SMITC,SMITCH,SMATCH,SNATCH
SMITE,SMITE,SMITE,SMAT,SNAT
SMITEN,SMITEN,SMITEN,SMATAN,SNATAN
SMITER,SMITER,SMITER,SMATAR,SNATAR
SMITH,SMIT,SMITH,SMATH,SNAT
SMITHALS,SMITALS,SMITHAL,SMATHALS,SNATALS
SMITHAM,SMITAM,SMITHAM,SMATHAM,SNATAN
SMITHARD,SMITARD,SMITHARD,SMATHARD,SNATARD
SMITHARST,SMITARST,SMITHARST,SMATHARST,SNATARST
SMITHE,SMITE,SMITHE,SMATH,SNAT
SMITHEE,SMITEE,SMITHEE,SMATH,SNATY
SMITHELS,SMITELS,SMITHEL,SMATHALS,SNATALS
SMITHEM,SMITEM,SMITHEM,SMATHAM,SNATAN
SMITHEMAN,SMITEMAN,SMITHEMAN,SMATHAMAN,SNATANAN
SMITHEN,SMITEN,SMITHEN,SMATHAN,SNATAN
SMITHER,SMITER,SMITHER,SMATHAR,SNATAR
SMITHERAM,SMITERAM,SMITHERAM,SMATHARAM,SNATARAN
SMITHERD,SMITERD,SMITHERD,SMATHARD,SNATARD
SMITHERGALE,SMITERGALE,SMITHERGALE,SMATHARGAL,SNATARGAL
SMITHERGAYLE,SMITERGAYLE,SMITHERGAYLE,SMATHARGAL,SNATARGAL
SMITHERGELL,SMITERGELL,SMITHERGELL,SMATHARGALL,SNATARGALL
SMITHERGILL,SMITERGILL,SMITHERGILL,SMATHARGALL,SNATARGALL
SMITHERM,SMITERM,SMITHERM,SMATHARM,SNATAR
SMITHERMAN,SMITERMAN,SMITHERMAN,SMATHARMAN,SNATARAN
SMITHERS,SMITERS,SMITHER,SMATHARS,SNATARS
SMITHES,SMITES,SMITHE,SMATHAS,SNATS
SMITHEY,SMITEY,SMITHEY,SMATH,SNATY
SMITHEYMAN,SMITEYMAN,SMITHEYMAN,SMATHAMAN,SNATANAN
SMITHEYS,SMITEYS,SMITHEY,SMATHAS,SNATAS
SMITHHURST,SMITHURST,SMITHHURST,SMATHHARST,SNATHARST
SMITHICK,SMITICK,SMITHICK,SMATHACK,SNATAC
SMITHICKE,SMITICKE,SMITHICKE,SMATHACK,SNATAC
SMITHIE,SMITIE,SMITHIE,SMATH,SNATY
SMITHIEMAN,SMITIEMAN,SMITHIEMAN,SMATHAMAN,SNATANAN
SMITHIER,SMITIER,SMITHIER,SMATHAR,SNATAR
SMITHIES,SMITIES,SMITHIE,SMATHAS,SNATAS
SMITHILLS,SMITILLS,SMITHILL,SMATHALLS,SNATALLS
SMITHIMAN,SMITIMAN,SMITHIMAN,SMATHAMAN,SNATANAN
SMITHIN,SMITIN,SMITHIN,SMATHAN,SNATAN
SMITHISON,SMITISON,SMITHISON,SMATHASAN,SNATASAN
SMITHMAN,SMITMAN,SMITHMAN,SMATHMAN,SNATNAN
SMITHOM,SMITOM,SMITHOM,SMATHAM,SNATAN
SMITHS,SMITS,SMITH,SMATHS,SNATS
SMITHSON,SMITSON,SMITHSON,SMATHSAN,SNATSAN
SMITHSONNE,SMITSONNE,SMITHSONNE,SMATHSANN,SNATSANN
SMITHSONS,SMITSONS,SMITHSON,SMATHSANS,SNATSANS
SMITHSTONE,SMITSTONE,SMITHSTONE,SMATHSTAN,SNATSTAN
SMITHURST,SMITURST,SMITHURST,SMATHARST,SNATARST
SMITHWAIT,SMITAIT,SMITHWAIT,SMATHWAT,SNATWAT
SMITHWAITE,SMITAITE,SMITHWAITE,SMATHWAT,SNATWAT
SMITHWHITE,SMITITE,SMITHWHITE,SMATHWHAT,SNATWHAT
SMITHWICK,SMITICK,SMITHWICK,SMATHWACK,SNATWAC
SMITHY,SMITY,SMITHY,SMATH,SNATY
SMITHYES,SMITYES,SMITHYE,SMATHAS,SNATAS
SMITHYMAN,SMITYMAN,SMITHYMAN,SMATHAMAN,SNATANAN
SMITHYS,SMITYS,SMITHY,SMATHAS,SNATAS
SMITON,SMITON,SMITON,SMATAN,SNATAN
SMITOR,SMITOR,SMITOR,SMATAR,SNATAR
SMITS,SMITS,SMIT,SMATS,SNATS
SMITT,SMITT,SMITT,SMATT,SNATT
SMITTE,SMITTE,SMITTE,SMATT,SNATT
SMITTEN,SMITTEN,SMITTEN,SMATTAN,SNATTAN
SMITTH,SMITT,SMITTH,SMATTH,SNATT
SMITTON,SMITTON,SMITTON,SMATTAN,SNATTAN
SMITTS,SMITTS,SMITT,SMATTS,SNATTS
SMITY,SMITY,SMITY,SMAT,SNATY
SMIYTH,SMIYT,SMIYTH,SMATH,SNAT


and here again the output still fails to match:

Enter name to search for:
SNAT
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:
----------------------
Enter name to search for:
SNATS
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:


any idea to fix this???

Korsila
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
test
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
HMMmmm. Can't seem to post the whole code. Perhaps there are size limits now. We may need to move this to a fresh question.

Sorry about the delay. I thought you had perhaps gone on holidays for a couple weeks.

Anyway, we now face a little debugging. When I enter snat I get the correct response, but when you enter it you don't. So presumably there is something that is subtly different on your system (kind of like the fact that I have a stricmp in my library, but you don't). So here is the program with a line of debug in it. Please use the original base.dat. The smaller the test case the better; and the debug is specifically geared for it. On my machine the output with the debug looks like this:

Enter name to search for:
snat
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:
-SMIT-SNAT-snat-
SMIT SMITE SMITH SMITHE SMITHEE

The critical line is the one with the dashes in it. Please report any deviations whatsoever. The dashes are there to exposes spaces or other odd characters that may cause the names to mismatch.

Since I can't seem to post the whole program, here is the critical fragment:

     if(lstricmp(bfield[0],name)!=0)
     {     printf("No match found\n\nCanonical name matches:\n");
          for(i=1; i<=4; ++i)
          {     fseek(namefile,0L,SEEK_SET);
               printf("CODE %7s: ",cname[i-1]);
               while(fgets(line,400,namefile)!=NULL)
               {     setfields(line,field);
if(i==4 && lstricmp(field[0],"SMIT")==0)
 printf("\n-%s-%s-%s-\n",field[0],field[4],name);
                    if(lstricmp(field[i],name)==0)printf("%s ",field[0]);
               }
               printf("\n");
          }
     }

Please replace that if clause in your code, or may just insert the if(i==4.... line.

Let me know what you get.
0
 

Author Comment

by:korsila
Comment Utility
here what i got:
Enter name to search for:
snat
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:
-snat-SNAT

Enter name to search for:
snats
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:
-snats-NAT

0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
Are you sure that is what it displays? Precision is critical here. Given that a line is showing at all, I would expect the first entry to be "SMIT" (because finding SMIT is what causes the line to be displayed at all). Also, if the line is displayed, there should be 4 dashes. There is some uncertainty as to what is between the dashes, but since the printf contains 4 literal dashes, they should all appear.......
0
 

Author Comment

by:korsila
Comment Utility
dear imladris,
I am 100% sure...I did changed the code as you suggested..and I got those output above...
any suggestion???
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
Still got posting limitations. Hopefully this will fit.

Interesting. OK, I have a conjecture, given that reassurance. I'm guessing that the -SMIT at the beginning of the line was overwritten because the SNAT (in the file) contains a trailing carriage return. This would cause it to go to the beginning of the line, and then write the snat. It would also explain why it doesn't come up as a match. I still can't post the whole code. Here is the relevant routine. Please replace setfields with this one:

void setfields(char *line,char *field[5])
{     int i;

     field[0]=strtok(line,",\n");
     for(i=1; i<5; ++i)field[i]=strtok(NULL,",\n\r");
     return;
}

If my conjecture is correct, adding the "\r" in the strtok call should take care of it.
0
 

Author Comment

by:korsila
Comment Utility
hmmm that's better ..here is what I GOT...

Enter name to search for:
snat
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:
-SMIT-SNAT-snat-
SMIT SMITE SMITH SMITHE SMITHEE
-------------------------------------
Enter name to search for:
snats
No match found

Canonical name matches:
CODE soundex:
CODE  phonex:
CODE  nysiis:
CODE simplex:
-SMIT-SNAT-snats-

----------------
so what is next sir? am getting exicted to solve this :)
korsila
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
Isn't that all? Once you remove the debug lines that is the correct output isn't it? Snat has the mentioned matches for simplex in the original base.dat, and snats has none.

0
 

Author Comment

by:korsila
Comment Utility
wooooooooooo, I didn't realise that was the corrected output ^_^ big embarassing :)

well done and that is what I need to add up my knowledge and of course a new collection of sexy codes by your implementation...

thank you very much indeed..you are worth it....

Korsila
0
 

Author Comment

by:korsila
Comment Utility
you deserve not only points but my respect as the best expert ever on earth where I can truth for life ...

with best regards,

Korsila
0
 

Author Comment

by:korsila
Comment Utility
Dear Imladris,
are you busy at this time, since I need to update a new requirement in the old question (the one be4 this one)...and it seems you are the only one who can make it...

once again, a million thank + 1 big hug (- -)
korsila
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
I am glad we got that worked out.

I am running about middling busy right at the moment. So, unless it is very involved, I should be able to do something. It may take a couple of weeks when all is said and done, but that hasn't been a critical problem in the past.
0
 
LVL 16

Expert Comment

by:imladris
Comment Utility
I am glad we got that worked out.

I am running about middling busy right at the moment. So, unless it is very involved, I should be able to do something. It may take a couple of weeks when all is said and done, but that hasn't been a critical problem in the past.

So, just open a new question, and I'll have a look.
0
 

Author Comment

by:korsila
Comment Utility
Dear Imladris, I have posted a new question which based on your old answers...please check it out it's uunder the title of "name searching and calculation"

it's not that bad but I just don#'t know how to put 2 codes of yours together ^_^

many thanks, hope all's well with you...

p.s. I hope you are not too busy this time..^_^
korsila
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
This is a short and sweet, but (hopefully) to the point article. There seems to be some fundamental misunderstanding about the function prototype for the "main" function in C and C++, more specifically what type this function should return. I see so…
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now