Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Please Help me urgently (http://www.go4expert.com/forums/help-urgently-t5837/)

shahzaib198 13Aug2007 18:57

Please Help me urgently
 
Pattern Matching Code using table

Below is my code, i m given an assignment of it. please help me.
Well the problem that it is arrising is that the correct values after comparison are not coming. So please help me in this. in id[i][j].

it should be like
let say for pattern aaba
Output would be
Code:

      a          b
    aa        ab
    aaa      aab
    aaba      aabb

no finding no is a problem for me
it should be

like
Code:

      1        0
      2        0
      2        3
      4        0

but it is not coming
please see the code

Code:

// i am labelling the area

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>

#define SIZE strlen(pattern)

char *sstring(char s[100],int i,int l);
void remove_duplicates(void);
void sublists(void);

char column[20];
char pattern[20];
char sublist[21][20];
char table[21][20];

void main(void)
{
char string[100],temp[21][20],sl[20][20];
int id[10][10];
int count=0;
char t[10];
char *ptr;
ptr=t;

clrscr();

//first of all getting the pattern
printf("\n\nPlease Enter the Pattern : ");
gets(pattern);

//now making a copy of pattern for removing duplicates
strcpy(column,pattern);

//now removing duplicates
remove_duplicates();

//now making the sublist of the pattern
sublists();

 for(int i=0;i<strlen(pattern);i++)
 {
  strcpy(temp[i],sstring(pattern,0,count++));
}
count=0;

//this is the problem are
for( i=0;i<strlen(pattern);i++)

  {
  for(int j=0;j<strlen(column);j++)
    {
      strcat(temp[i],sstring(column,count++,1));

      printf("%10s ",temp[i]);

      for(int l=strlen(pattern)-1;l>=0;l--)
      {
        int counts=strlen(sublist[l])-1;  //2
        int comps=strlen(temp[i]);        //1
        int comp=0;
        int cp=l;

            while(counts!=-1)
            {  counts=strlen(sublist[cp])-1;  //2
            if(temp[i][comp]==sublist[cp][counts])
              { count--;
              comp++;

              if(comp==comps)
              {
                  id[i][j]=l;
                  break;
              }
              }
            else
                {
                  cp--;
                }

              }
                        cp=l;


      }

//till here

      if (count==strlen(column)) count=0;

        //another loop for finding the position

      strcpy(temp[i],sublist[i]);
    }
  printf("\n");

  }

  printf("\n");



//printing

for(i=0;i<strlen(pattern);i++)
 {
 for(int j=0;j<strlen(column);j++)
  {

    printf("Q[%d]  ",id[i][j]);

  }
  printf("\n");
 }

//printf("\n\nPlease Enter the string: ");
//gets(string);


getch();

}



void remove_duplicates(void)
{

//this is done to remove duplicates

  for(int j=SIZE-1;j>=0;j--)
  {
    for(int k=0;k<j;k++)
    {
      if (column[j]==column[k])
      {
        column[j]='.';
      }
    }
  }
    for(int k=SIZE-1;k>=0;k--)
    {

      if (column[k]=='.')
      {
        for(int i=k;i<SIZE;i++)
          column[i]=column[i+1];
      }

}

}





void sublists(void)
{
  int count=0;


for(int i=0;i<strlen(pattern)+1;i++)
{
  strcpy(sublist[i],sstring(pattern,0,count++));
}

sublist[0][0]='\0';
for(i=0;i<strlen(pattern)+1;i++)
 printf("\n\nThe substring @ q[%d] is : %s ",i,sublist[i]);
  printf("\n\n");

}




char *sstring(char s[100],int i,int l)
{
int count;
char sp[100];
count=0;
 while (count<l)
 {
 sp[count]=s[i];
 count=count+1;
 i=i+1;
 }
 sp[count]='\0';
  return (sp);
}


DaWei 13Aug2007 19:08

Re: Please Help me urgently
 
Please read this urgently


All times are GMT +5.5. The time now is 11:10.