To find string in a matrix using c
To find the string in a matrix from top to bottom and also from left to right.
Logic:
- Convert the given string in an array format.
- Then search the string from top to bottom.
- And also search from left to right.
- Then find the starting index and also ending index of string.
Algorithm:
- Get the input from user and stores it in the two-dimensional array.
- Then checks with the starting index of a searching array with the matrix.
- If the element is found the search with next index.
- Repeat step 3 until it reaches the last index of the matrix.
Program:
#include<stdio.h> #include<math.h> void main() { //n->length of the string //q->row and column of the matrix //e->length of string to search in the matrix //p->stores square root value as float //l->stores square root value as integer //m->holds index of the matrix int i,j,k,n,m=0,q,l,r=0,e; char a[50],b[10][10],c[5]; float p=0; clrscr(); printf("enter the string:") gets(a); n=strlen(a); //finds the length of the string p=sqrt(n); //finds the square root as a float value l=p; //converts float to integer if(l==p) //compare float and integer { q=l; } else { q=l+1; } for(i=0;i<q;i++) // stores the given string into the matrix { for(j=0;j<q;j++) { if(m<n) //checks with the length { b[i][j]=a[m]; m++; printf("%c ",b[i][j]); } }printf("\n"); } printf("enter the string to search:"); gets(c); //string to search e=strlen(c); for(i=0;i<q;i++) //checks horizontally in matrix { k=0; //initializing searching index for(j=0;j<q;j++) { if(b[i][j]==c[k]) //initial element of searching string checks with all elements in matrix { k++; //increments search string index r++; //counts the length of matching string } else //element not found { r=0; } if(r==e) //string found in matrix { printf("the string found at starting position:[%d,%d]",i,j-e+1); printf("and ends at position:[%d,%d]",i,j); break; } } } for(j=0;j<q;j++ ) //checks vertically in matrix { k=0; //initializing searching index for(i=0;i<q;i++) { if(b[i][j]==c[k]) //initial element of searching string checks with all elements in matrix { k++; //increments search string index only if element matching r++; //counts the length of matching string } else { r=0; } if(r==e) //when string found in matrix { printf("the string found atstarting position:[%d,%d]",j,i-e+1); printf("and ends at position:[%d,%d]",j,i); break; } } } getch(); }