Answer:
Here is the C++ program:
#include <iostream> //to use input output functions
#include <cstring> //to manipulate C-strings
#include <string> //to manipulate strings
using namespace std; //to access objects cin cout
//function prototypes
void upper(char *); to convert to upper case
void lower(char *); //to convert to lower case
void reverse(char *); //to convert to reverse case
int main() { //start of main method
char input[101]; //creates a char type array to hold input string
cout << "Enter a string: "; //prompts user to enter a string
cin.getline(input, 101); //reads input string from user
upper(input); //calls upper() method to convert the string to upper case
lower(input); //calls lower() method to convert the string to lower case
reverse(input); } //calls reverse() method to convert the string to reverse case
void upper(char *cString){ //method that takes a pointer to a C-string as it's only argument and converts that string to upper case
cout << "String in upper case: "; //displays string in upper case
for(int i = 0; i < strlen(cString); i++){ //iterates through the input string cString until the length of the cString is reached
if(islower(cString[i])) //checks if the character at i-th index of cString is in lower case
cout << (char) toupper(cString[i]); //converts each i-th character of cString to upper case at each iteration
else //if no character of cString is in lower case
cout << cString[i]; } //displays the cString as it is
cout << endl;} //prints a new line
void lower(char *cString){ //method that takes a pointer to a C-string as it's only argument and converts that string to lower case
cout << "String in lower case: "; //displays string in lower case
for(int i = 0; i < strlen(cString); i++){ //iterates through each character using for loop first character to last
if(isupper(cString[i])) //checks if the character at i-th index of cString is in upper case
cout << (char) tolower(cString[i]); //converts each i-th character of cString to lower case at each iteration
else //if no character of cString is in upper case
cout << cString[i]; } //displays the cString as it is
cout << endl; } //prints a new line
void reverse(char *cString){ //method that takes a pointer to a C-string as it's only argument and converts that string to reverse case (upper to lower and vice versa)
cout << "String in reverse case: "; //displays string in reverse case
for(int i = 0; i < strlen(cString); i++){ //iterates through each character using for loop first character to last
if(isupper(cString[i])) //checks if the character at i-th index of cString is in upper case
cout << (char) tolower(cString[i]); //converts character at i-th position of cString to lower
else //if the character is in lower case
cout << (char) toupper(cString[i]); } //converts character at i-th position of cString to upper
cout << endl;} //prints a new line
Step-by-step explanation:
I will explain the program with an example.
Lets suppose user enters "hi" as input. So
Now first upper() method is called by passing this C-string to it.
It has a for loop that checks at each iteration, if a character of C-string is in lower using islower method which returns true if the character is in lower case. Since both the characters 'h' and 'i' are in lower in case so they are converted to upper case at each iteration using toupper() method. So the output of this part is:
String in upper case: HI
Now next lower() method is called by passing this C-string to it.
It has a for loop that checks at each iteration, if a character of C-string is in upper using isupper method which returns true if the character is in upper case. Since both the characters 'h' and 'i' are in lower in case so the string remains as it is. So the output of this part is:
String in lower case: hi
Now next reverse() method is called by passing this C-string to it.
It has a for loop that checks at each iteration, if a character of C-string is in upper using isupper method which returns true if the character is in upper case. Since both the characters 'h' and 'i' are in lower so else part: cout << (char) toupper(cString[i]); executes which converts these characters to upper case (reverse case). So the output of this part is:
String in reverse case: HI
The screenshot of program output with a different example is attached.