This code is in C++. Please read and follow instructions carefully. Thank you Wr
ID: 3847059 • Letter: T
Question
This code is in C++. Please read and follow instructions carefully. Thank you
Write a function that determines if two strings are anagrams. The function should not be case sensitive and should disregard any punctuation or spaces. Two strings are anagrams if the letters can be rearranged to form each other. For example, "Eleven plus two" is an anagram of "Twelve plus one". Each string contains one "v", three "e's", two 'I's", etc. You may use either the string class or a C-style string. Either way, you may not use built-in C++ functions that we have NOT discussed in lecture. Write a program that inputs two strings and calls your function to determine whether or not the strings are anagrams and prints the result. REQUIRED:You MUST use strings to write this program. You may not use any C++ functions that we have NOT discussed in lecture. The program should print a string of text to the terminal before getting each line of input from the user. A session should look like one of the following examples (including whitespace and formatting), with possibly different numbers and numbers of asterisks in the output: Enter first string: Eleven plus two Enter second string: Twelve plus three The strings are not anagrams. OR Enter first string: Rats and Mice Enter second string: in cat's dream. The strings are anagrams. The strings printed by the program should include a newline at the end, but no other trailing whitespace (whitespace at the end of the line).Explanation / Answer
// C/C++ program to check whether two strings are anagrams
// of each other
#include <stdio.h>
#include <string.h>
#include <iostream>
/* Function prototype for string a given string using
quick sort */
void quickSort(char *arr, int si, int ei);
/* function to check whether two strings are anagram of
each other */
bool areAnagram(char *str1, char *str2)
{
// Get lenghts of both strings
int n1 = strlen(str1);
int n2 = strlen(str2);
// If length of both strings is not same, then they
// cannot be anagram
if (n1 != n2)
return false;
// Sort both strings
quickSort(str1, 0, n1 - 1);
quickSort(str2, 0, n2 - 1);
// Compare sorted strings
for (int i = 0; i < n1; i++)
if (str1[i] != str2[i])
return false;
return true;
}
// Following functions (exchange and partition are needed
// for quickSort)
void exchange(char *a, char *b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}
int partition(char A[], int si, int ei)
{
char x = A[ei];
int i = (si - 1);
int j;
for (j = si; j <= ei - 1; j++)
{
if(A[j] <= x)
{
i++;
exchange(&A[i], &A[j]);
}
}
exchange (&A[i + 1], &A[ei]);
return (i + 1);
}
/* Implementation of Quick Sort
A[] --> Array to be sorted
si --> Starting index
ei --> Ending index
*/
void quickSort(char A[], int si, int ei)
{
int pi; /* Partitioning index */
if(si < ei)
{
pi = partition(A, si, ei);
quickSort(A, si, pi - 1);
quickSort(A, pi + 1, ei);
}
}
/* Driver program to test to print printDups*/
int main()
{
printf("Enter first string:");
printf(" ");
char str1[100];// = "test";
scanf("%s",str1);
printf(" ");
printf("Enter second string:");
printf(" ");
char str2[100];// = "ttew";
scanf("%s",str1);
printf(" ");
if (areAnagram(str1, str2))
printf("The strings are anagrams");
else
printf("The strings are not anagrams");
return 0;
}