#include <iostream> #include <string> #include <iomanip> #include<stdio.h> #incl
ID: 3847069 • Letter: #
Question
#include <iostream>
#include <string>
#include <iomanip>
#include<stdio.h>
#include<ctype.h>
using namespace std;
//function prototypes
void getString(char*, char*);
int getLength(char*);
int isPalindrome(char*);
void displayReverse(char*);
void concat(char*, char*);
void displayResults(char*, char*);
int main()
{
//declare two char array to hold string
char str1[250], str2[250];
//create pointers to the strings
char *firstString = str1;
char *secondString = str2;
int flag = 1;
char choice;
//repeat the below execution until the user wishes to quit
do
{
//get the input using getString method
getString(firstString, secondString);
//display the results using displayResults method
displayResults(firstString, secondString);
//prompt and read if user wishes to repeat
printf(" Would you like to continue with another pair of strings (Y of N)? ");
scanf(" %c", &choice);
//if user enters n exit the loop
if (choice == 'n' || choice == 'N')
{
flag = 0;
}
getchar();
} while (flag == 1);
return 0;
}
//function that takes two pointer variables and read the strings using pointers
void getString(char *firstString, char *secondString)
{
//prompt and read two strings
printf("Enter the first string: ");
cin >> firstString;
printf("Enter the second string: ");
cin >> secondString;
}
//function that takes a pointer to the string as parameter and returns the length of the string
int getLength(char *str)
{
int len = 0;
//loop through the string and get its length
while (*str != '')
{
len++;
str++;
}
return len;
}
//function that takes a pointer to string and checks if string is palindrome or not
int isPalindrome(char *str)
{
//get the length of the string
int len = getLength(str);
int isPalin = 1;
int i;
//loop through the string and check if string is palindrome or not
for (i = 0; i<len; i++)
{
if (tolower(str[i]) != tolower(str[len - i - 1]))
isPalin = 0;
}
return isPalin;
}
//function that takes a pointer to string and prints the reverse of the string
void displayReverse(char *str)
{
//get the length of the string
int len = getLength(str);
int i;
//starting from the last position print the characters in the string in reverse order
for (i = len; i >= 0; i--)
printf("%c", *(str + i));
}
//function that takes two string and print the concatenated string
void concat(char *firstString, char *secondString)
{
int i = 0, j = 0;
char concatenated[500];
char *newString = concatenated;
//loop through the first string and add it to the new string
while (firstString[i] != '')
{
newString[j] = firstString[i];
j++;
i++;
}
i = 0;
//loop through the second string, and add it to the new string
while (secondString[i] != '')
{
newString[j] = secondString[i];
j++;
i++;
}
newString[j] = '';
//print the concatenated string
for (i = 0; i<j; i++)
printf("%c", *(newString + i));
}
//function that takes two string and displays the results
void displayResults(char *firstString, char *secondString)
{
printf(" Length of the first string is %d", getLength(firstString));
printf(" Length of the second string is %d", getLength(secondString));
if (isPalindrome(firstString))
printf(" First string is a palindrome");
else
printf(" First string is not palindrome");
if (isPalindrome(secondString))
printf(" Second string is a palindrome");
else
printf(" Second string is not palindrome");
printf(" Reverse of the first string is: ");
displayReverse(firstString);
printf(" Revese of the second string is: ");
displayReverse(secondString);
printf(" The concatenated string is: ");
concat(firstString, secondString);
}
Explanation / Answer
#include <iostream>
#include <string>
#include <iomanip>
#include<stdio.h>
#include<ctype.h>
using namespace std;
//function prototypes
void getString(char*, char*);
int getLength(char*);
int isPalindrome(char*);
void displayReverse(char*);
void concat(char*, char*);
void displayResults(char*, char*);
int main()
{
//declare two char array to hold string
char str1[250], str2[250];
//create pointers to the strings
char *firstString = str1;
char *secondString = str2;
int flag = 1;
char choice;
//repeat the below execution until the user wishes to quit
do
{
//get the input using getString method
getString(firstString, secondString);
//display the results using displayResults method
displayResults(firstString, secondString);
//prompt and read if user wishes to repeat
printf(" Would you like to continue with another pair of strings (Y of N)? ");
scanf(" %c", &choice);
//if user enters n exit the loop
if (choice == 'n' || choice == 'N')
{
flag = 0;
}
getchar();
} while (flag == 1);
return 0;
}
//function that takes two pointer variables and read the strings using pointers
void getString(char *firstString, char *secondString)
{
//prompt and read two strings
printf("Enter the first string: ");
cin >> firstString;
printf("Enter the second string: ");
cin >> secondString;
}
//function that takes a pointer to the string as parameter and returns the length of the string
int getLength(char *str)
{
int len = 0;
//loop through the string and get its length
while (*str != '')
{
len++;
str++;
}
return len;
}
//function that takes a pointer to string and checks if string is palindrome or not
int isPalindrome(char *str)
{
//get the length of the string
int len = getLength(str);
int isPalin = 1;
int i;
//loop through the string and check if string is palindrome or not
for (i = 0; i<len; i++)
{
if (tolower(str[i]) != tolower(str[len - i - 1]))
isPalin = 0;
}
return isPalin;
}
//function that takes a pointer to string and prints the reverse of the string
void displayReverse(char *str)
{
//get the length of the string
int len = getLength(str);
int i;
//starting from the last position print the characters in the string in reverse order
for (i = len; i >= 0; i--)
printf("%c", *(str + i));
}
//function that takes two string and print the concatenated string
void concat(char *firstString, char *secondString)
{
int i = 0, j = 0;
char concatenated[500];
char *newString = concatenated;
//loop through the first string and add it to the new string
while (firstString[i] != '')
{
newString[j] = firstString[i];
j++;
i++;
}
i = 0;
//loop through the second string, and add it to the new string
while (secondString[i] != '')
{
newString[j] = secondString[i];
j++;
i++;
}
newString[j] = '';
//print the concatenated string
for (i = 0; i<j; i++)
printf("%c", *(newString + i));
}
//function that takes two string and displays the results
void displayResults(char *firstString, char *secondString)
{
printf(" Length of the first string is %d", getLength(firstString));
printf(" Length of the second string is %d", getLength(secondString));
if (isPalindrome(firstString))
printf(" First string is a palindrome");
else
printf(" First string is not palindrome");
if (isPalindrome(secondString))
printf(" Second string is a palindrome");
else
printf(" Second string is not palindrome");
printf(" Reverse of the first string is: ");
displayReverse(firstString);
printf(" Revese of the second string is: ");
displayReverse(secondString);
printf(" The concatenated string is: ");
concat(firstString, secondString);
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.