66.1k views
4 votes
Write a program with three functions: upper , lower , and reverse . The upper function should accept a pointer to a C-string as it's only argument. It should step through each character in the string, converting it to uppercase. The lower function, too, should accept a pointer to a C-string as it's only argument. It should step through each character in the string, converting it to lowercase. Like upper and lower , reverse should also accept a pointer to a string as it's only argument. As it steps through the string, it should test each character to determine whether it is upper- or lowercase. If a character is uppercase, it should be converted to lowercase. Likewise, if a character is lowercase, it should be converted to uppercase. Test the functions by asking for a string in function main , then passing it to them in the following order: reverse, lower , and upper. Main will then print out the strings to demonstrate the functions worked. Each function accepts exactly one argument. None of the functions return anything. None of the functions (other than main) interacts with the user in anyway. Variables of type string are not allowed.

User Jinx
by
5.0k points

1 Answer

2 votes

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.

Write a program with three functions: upper , lower , and reverse . The upper function-example-1
User Michael Minton
by
5.3k points