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.

Respuesta :

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

 

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.

Ver imagen mahamnasir
Q&A Education