Untitled

 avatar
unknown
plain_text
3 years ago
2.8 kB
9
Indexable
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int length(char *a);
int palindrome(char *a);
int compare(char *a,char *b);
void copy(char *b,char *a);
void reverse(char *a);
void substring(char *a,char *b);

int main()
{
	char a[100],b[100];
	int result,ch;
	do
	{
		printf("\n\n1. Length of the string");
		printf("\n2. Check the string for Palindrome");
		printf("\n3. String Comparison");
		printf("\n4. Copy the string");
		printf("\n5. Reverse the given string");
		printf("\n6. Find Subsrting of a given string\n7. Quit");
		printf("\n\n Enter ur choice : ");
		scanf("%d",&ch);
		switch(ch)
		{
			case 1: printf("\n Enter a string : ");
					scanf("%s",a);
					printf("\n Length of a given string is : %d ",length(a));
				break;
			case 2: printf("\n Enter a string : ");
					scanf("%s",a);
					result = palindrome(a);
					if(result == 0)
					printf("\n String is Not Palindrome ");
					else
					printf("\n String is Palindrome ");
				break;
			case 3: printf("\n Enter first string : ");
					scanf("%s",a);
					printf("\n Enter second string : ");
					scanf("%s",b);
					result = compare(a,b);
					if(result == 0)
					printf("\n Strings are Equal");
					else
					printf("\n Strings are Not Equal");
				break;
			case 4: printf("\n Enter a String : ");
					scanf("%s",a);
					copy(b,a);
					printf("\n Copied String is : %s",b);
				break;
			case 5: printf("\n Enter a String : ");
					scanf("%s",a);
					reverse(a);
					printf("\n Reversed String is : %s",a);
				break;
			case 6: printf("\n Enter first string : ");
					scanf("%s",a);
					printf("\n Enter substring : ");
					scanf("%s",b);
					substring(a,b);
				break;
		}
	}while(ch!=7);
	return 0;
}

int length(char *a)
{
	int result=0;
	while(*(a+result) != '\0')
		result++;
	return (result);
}

int palindrome(char *a)
{
	int i,result,flag=0;
	result=length(a);
	for (i=0;i<result;i++)
	{
		if(a[i]==a[result-i-1])
		flag=flag+1;
	}
	if(flag==result)
	return 1;
	else
	return 0;
}

int compare(char *a,char *b)
{
	while (*a != '\0')
	{
		if(*a > *b)
		return (1);
		if(*a < *b)
		return (-1);
		a++;b++;
	}
	return (0);
}

void copy(char *b,char *a)
{
	while (*a != '\0')
	{
		*b = *a;
		a++;b++;
	}
	*b = '\0';
}

void reverse(char *a)
{
	char *p,*q;
	char temp;
	p=q=a;
	while(*q != '\0')
	q++;q--;
	while(p<q)
	{
		temp = *p;
		*p=*q;
		*q=temp;
		p++;q--;
	}
}

void substring(char *a, char *b)
{
	int i,j,temp;
	for(i = 0; *(a+i) != '\0'; i++)
	{
		j = 0;
		if(*(a+i) == *(b+j))
		{
			temp = i+1;
			while (*(a+i) == *(b+j))
			{
				i++;
				j++;
			}
			if(*(b+j) == '\0')
				printf("\n The Substring is Present in given string at Position %d", temp);
			else
			{
				i = temp;
				temp = 0;
			}
		}
	}
	if(temp == 0)
		printf("\n The Substring is Not Present");
}