Tuesday, May 19, 2009

String Operations

/*
Title : String Operations
Write a program to perform following string operations:
1. Length
2. Reverse
3. Compare (Case Sensitive)
4. Concatenation
5. Sub String
6. Palendrome
7. Copy
(With and Without pointer to array.)
*/

#include
#include
#include

void length(char *p,char *q);
void reverse(char *p,char *q);
void compare(char *p,char *q);
void conctenate(char *p,char *q,char *r);
void substring(char *p,char *q);
void Palendrome(char *p,char *r);
void copy(char *p,char *q,char *r);

main()
{
char str[10], str1[10], str2[25];
int i, j, k, ch, ch1, flag=0, d;


clrscr();
flushall();


printf("\n Enter 1st string: ");
scanf("%s", str);
printf("\n Enter 2nd string: ");
scanf("%s", str1);
printf("\n Menu 1:-");
printf("\n 1. Without Pointer");
printf("\n 2. With Pointer\n Enter:");
scanf("%d",&ch);
do
{
switch(ch)
{
case 1: //Without Pointer

printf("\n\n Menu:-\n\n");
printf(" 1. LENGTH \n");
printf(" 2. REVERSE \n");
printf(" 3. COMPARE \n");
printf(" 4. CONCATENATE\n");
printf(" 5. SUBSTRING\n");
printf(" 6. PALENDROME \n");
printf(" 7. COPY \n");
printf(" 8. EXIT\n");
printf("\n\nEnter the choice:");
scanf("%d",&ch1);

switch(ch1)
{
case 1: //Length
for(i=0;str[i]!='\0';i++);
printf("\n The Length of 1st string is: %d", i);
for(j=0;str1[j]!='\0';j++);
printf("\n The Length of 2nd string is: %d", j);
break;

case 2: // Reverse
printf(" \n The Reverse of 1st string is:");
for(i=0;str[i]!='\0';i++);
for(j=i-1;j>=0;j--)
printf("%c", str[j]);
printf(" \n The Reverse of 2nd string is:");
for(i=0;str1[i]!='\0';i++);
for(j=i-1;j>=0;j--)
printf("%c", str1[j]);

break;

case 3: //Compare
for(i=0;str[i]!='\0';i++);
for(j=0;str1[j]!='\0';j++);
if(i!=j)
{
printf("\n Strings are not equal");
}
else
{
for (k=0; k!=i; k++);
if (toupper(str[k])==toupper(str1[k]))
{
flag=1;
}
else
{
flag=0;
break;
}
}
if (flag==1)
{
printf("\n Strings are Equal");
}
if (flag==0)
{
printf("\n Strings are not Equal");
}
break;

case 4: // Conctenate
d=0;
for(i=0;str[i]!='\0';i++);
for(j=0;str1[j]!='\0';j++);
k=i+j;
for(i=0;str[i]!='\0';i++)
str2[i]=str[i];
for(j=i;j<=k;j++) { str2[j]=str1[d]; d++; } puts(str2); getch(); break; case 5: //Sub String flag=0; j=0; for(i=0;str[i]!='\0' && str1[j]!='\0'; i++) { if(str[i]==str1[j]) { j++; flag=1; } else { flag=0; j=0; } } if (flag==1) { printf("it is a substring"); } if (flag==0) { printf("it is not a substring"); } break; case 6: //Palendrome for(i=0; str[i]!='\0'; i++); k=0; { for(j=i-1;j>=0;j--)
{
str2[k]=str[j];
k++;
}
str2[k]='\0';
for(k=0;k!=i;k++)
{
if (str2[k]==str[k])
{
flag=0;
}
else
{
flag=1;
break;
}
}
}
if(flag==0)
printf("\n It is a palindrome");
else
printf("\n It is not a palindrome");

break;

case 7: // Copy
for(i=0;str[i]!='\0';i++)
str2[i]=str[i];
str2[i]='\0';
for(i=0;str1[i]!='\0';i++)
str[i]=str1[i];
str[i]='\0';
printf("\nThe original string is: %s",str2);
printf("\nThe 1st copied string is: %s",str);
printf("\nThe 2nd copied string is: %s",str1);

break;

case 8:
exit(0);
}
break;

case 2: //With Pointer

printf("\n\n Menu:-\n\n");
printf(" 1. LENGTH \n");
printf(" 2. REVERSE \n");
printf(" 3. COMPARE \n");
printf(" 4. CONCATENATE \n");
printf(" 5. SUBSTRING\n");
printf(" 6. PALENDROME\n");
printf(" 7. COPY \n");
printf(" 8. EXIT\n");
printf("\nEnter the choice: ");
scanf("%d",&ch1);

switch(ch1)
{
case 1: //Length
length(str,str1);
break;

case 2: // Reverse
reverse(str,str1);
break;

case 3: //Compare
compare(str,str1);
break;

case 4: // Conctenate
conctenate(str,str1,str2);
break;

case 5: //Sub String
substring(str,str1);
break;

case 6: //Palendrome
Palendrome(str,str2);
break;

case 7: // Copy
copy(str,str1,str2);
break;

case 8:
exit(0);

}
}

}
while(ch1!=8);


}

void length(char *p,char *q)
{
int i,j;
for(i=0;*(p+i)!='\0';i++);
printf("\n The Length of 1st string is: %d", i);
for(j=0;*(q+j)!='\0';j++);
for(j=0;*(q+j)!='\0';j++);
printf("\n The Length of 2nd string is: %d", j);

}

void reverse(char *p,char *q)
{
int i,j;
printf(" \nThe Reverse of 1st string is:");
for(i=0;*(p+i)!='\0';i++);
for(j=i-1;j>=0;j--)
printf("%c", *(p+j));
printf(" \nThe Reverse of 2nd string is:");
for(i=0;*(q+i)!='\0';i++);
for(j=i-1;j>=0;j--)
printf("%c", *(q+j));

}
void compare(char *p,char *q)
{
int i,j,k,flag;
for(i=0;*(p+i)!='\0';i++);
for(j=0;*(q+j)!='\0';j++);
if(i!=j)
{
printf("\n Strings are not equal");
}
else
{
for (k=0; k!=i; k++);
if (toupper(*(p+k))==toupper(*(q+k)))
{
flag=1;
}
else
{
flag=0;
}
}
if (flag==1)
{
printf("\n Strings are Equal");
}
if(flag==0)
{
printf("\n Strings are not Equal");
}
}

void conctenate(char *p,char *q,char *r)
{
int d,i,j,k;
d=0;
for(i=0;*(p+i)!='\0';i++);
for(j=0;*(q+j)!='\0';j++);
k=i+j;

for(i=0;*(p+i)!='\0';i++)
*(r+i)=*(p+i);

for(j=i;j<=k;j++) { *(r+j)=*(q+d); d++; } for(i=0;*(r+i)!='\0';i++) printf("%c",*(r+i)); } void substring(char *p,char *q) { int i,j; int flag=0; j=0; for(i=0;*(p+i)!='\0' && *(q+j)!='\0'; i++) { if (*(p+i)==*(q+j)) { j++; flag=1; } else { flag=0; j=0; } } if (flag==1) { printf("it is a substring"); } if (flag==0) { printf("it is not a substring"); } } void Palendrome(char *p,char *r) { int i,j,k,flag; for(i=0;*(p+i)!='\0';i++); k=0; { for(j=i-1;j>=0;j--)
{
*(r+k)=*(p+j);
k++;
}
for(k=0;k!=i;k++)
{
if (*(r+k)==*(p+k))
{
flag=0;
}
else
{
flag=1;
}
}
}
if(flag==0)
printf("\n It is a palindrome");
else
printf("\n It is not a palindrome");
}
void copy(char *p,char *q,char *r)
{
int i;
for(i=0;*(p+i)!='\0';i++)
*(r+i)=*(p+i);
*(r+i)='\0';
for(i=0;*(q+i)!='\0';i++)
*(p+i)=*(q+i);
*(p+i)='\0';
printf("\nThe original string is:%s",r);
printf("\nThe 1st copied string is:%s",p);
printf("\nThe 2nd copied string is:%s",q);
}

No comments:

Post a Comment