Question

In: Computer Science

We will write a simple program that simply uses the three standard library functions. The following...

  1. We will write a simple program that simply uses the three standard library functions. The following is a high level description of the main program (main.cpp). In this program, please do the following:
    • Include the C-string library. #include <cstring>
    • Declare the following C-style string: char line[] = "ls -l -a | wc -c >> myfile";.
    • Declare a variable of type size_t named "len".
    • Use the builtin strlen function to compute the length of the variable "line". Store the result in "len".
    • Output the value of "len" ("The length of 'line' is..."). (The answer should be 26 for this string.)
    • Create an array of 10 C-strings named "strArray". (char* strArray[10];)
    • Initialize each element of "strArray" to be a string containing just the null character, "\0". Note that there is a difference between the null character, '\0', and a string containing only the null character, "\0". The former is a character, just like 'a' or '{'. The latter is a string that is functionally empty, e.g. "".
    • Use the builtin strtok function to split "line" into pieces using a space as the delimiter. Each piece will be placed into "strArray". Here is an overview of how that should work: 1) Declare an integer named "pieces" and set it to 0 initially. 2) Create a char* named "ptr" and assign it the return value of strtok, where "line" and " " are the two arguments. 3) Create a while loop that iterates while "ptr" is not NULL. 4) Set "strArray[pieces]" equal to "ptr". 5) Set "ptr" to the return value of strtok, where NULL and " " are the two arguments. 6) Increment "pieces".
    • Using "pieces" as the upper index, print out each element of "strArray", one per line. E.g. "strArray[0] = ...". Notice that we have split the original "line" variable into pieces. strArray[0] should be "ls", strArray[1] should be "-l", and so on.
    • Create a size_t variable named "size", and initialize it to 0.
    • Again using "pieces" as the upper index, calculate the sum of the lengths of each string in "strArray". Put the result in "size".
    • Create a size_t variable named "numBlanks". See if you can initialize it to the number of spaces in "line". HINT: You can do it using information you already have. You don't need another loop!
    • Print out the value of "numBlanks". (E.g. "The number of blanks is ..."). You can check for yourself that the answer should be 7 for the string we gave you.
    • Our last task will be to concatenate the elements of "strArray" into one big string using strcat. First, create a C-string that is large enough to hold the result. (char* result = new char[size + 1];)
    • Set result[0] to the null character, '\0'.
    • Once more, using "pieces" as the upper bound, call strcat successively with "result" as the first argument and strArray[i] as the second.
    • Print out the contents of "result" (e.g. "The concatenation of all strings in strArray is: ...").
    • Finally, clean up after yourself by entering "delete[] result;" Remember, for each new, there MUST BE a matching delete.

Solutions

Expert Solution

Solution:

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

    //Declaring C style string

    char line[]="ls -l -a | wc -c >> myfile";

    size_t len;

    //Finding length of string 'line'

    len=strlen(line);

    //Printing the length of string

    cout<<"The length of 'line' is "<<len<<endl;

    //Declaring an array of C-strings

    char* strArray[10];

    int i=0;

    //Initializing each string to \0

    while(i<10)

    {

        strArray[i]=(char *)"\0";   

        i++;

    }

    int pieces;

    pieces=0;

    char* ptr;

    //breaking line into tokens based on delimiter " "

    ptr=strtok(line," ");

    while(ptr!=NULL)

    {

        strArray[pieces]=ptr;

        ptr=strtok(NULL," ");

        pieces=pieces+1;

    }

    //Printing contents of strArray

    for(i=0;i<pieces;i++)

        cout<<"strArray["<<i<<"] = "<<strArray[i]<<endl;

    //Finding sum of lengths of all strings in strArray

    size_t size=0;

    for(i=0;i<pieces;i++)

        size=size+strlen(strArray[i]);

    

    //Finding number of blanks in line

    size_t numBlanks=pieces-1;

    cout<<"The number of blanks is "<<numBlanks<<endl;

    char* result = new char[size+1];

    result[0]='\0';

    //Concatenating all strings in strArray into a big string

    for(i=0;i<pieces;i++)

        strcat(result,strArray[i]);

    

    //Printing the result

    cout<<"The concatenation of all strings in strArray is: "<<result;

    delete[] result;

    return 0;

}

Output:


Related Solutions

*****For C++ Program***** Overview For this assignment, write a program that uses functions to simulate a...
*****For C++ Program***** Overview For this assignment, write a program that uses functions to simulate a game of Craps. Craps is a game of chance where a player (the shooter) will roll 2 six-sided dice. The sum of the dice will determine whether the player (and anyone that has placed a bet) wins immediately, loses immediately, or if the game continues. If the sum of the first roll of the dice (known as the come-out roll) is equal to 7...
Overview For this assignment, write a program that uses functions to simulate a game of Craps....
Overview For this assignment, write a program that uses functions to simulate a game of Craps. Craps is a game of chance where a player (the shooter) will roll 2 six-sided dice. The sum of the dice will determine whether the player (and anyone that has placed a bet) wins immediately, loses immediately, or if the game continues. If the sum of the first roll of the dice (known as the come-out roll) is equal to 7 or 11, the...
Write a program that uses the defined structure and all the above functions. Suppose that the...
Write a program that uses the defined structure and all the above functions. Suppose that the class has 20 students. Use an array of 20 components of type studentType. Other than declaring the variables and opening the input and output files, the function main should only be a collection of function calls. The program should output each student’s name followed by the test scores and the relevant grade. It should also find and print the highest test score and the...
For this assignment, write a program that uses functions to simulate a game of Craps. Craps...
For this assignment, write a program that uses functions to simulate a game of Craps. Craps is a game of chance where a player (the shooter) will roll 2 six-sided dice. The sum of the dice will determine whether the player (and anyone that has placed a bet) wins immediately, loses immediately, or if the game continues. If the sum of the first roll of the dice (known as the come-out roll) is equal to 7 or 11, the player...
Write a menu-driven program to test the three functions conver_tlength(), convert_width(), convert_volume() in a program. Program...
Write a menu-driven program to test the three functions conver_tlength(), convert_width(), convert_volume() in a program. Program should allow the user to select one of the options according to whether lengths, weights or volume are to be converted, read the volue to be converted and the units, and then call the appropriate function to carry out the conversion In unit out unit I C (inch to centimeter 1 in = 2.4 cm) F C (feet to centimeter 1 ft = 30.4...
what is the following (ARDUINO): -Examples of a standard Arduino library -The Arduino uses a structured...
what is the following (ARDUINO): -Examples of a standard Arduino library -The Arduino uses a structured programming language-what type -Channels of A/D conversion on the Arduino Uno -The Arduino correlates temperature readings with what
Program must be in C++! Write a program which: Write a program which uses the following...
Program must be in C++! Write a program which: Write a program which uses the following arrays: empID: An array of 7 integers to hold employee identification numbers. The array should be initialized with the following values: 1, 2, 3, 4, 5, 6, 7. Hours: an array of seven integers to hold the number of hours worked by each employee. payRate: an array of seven doubles to hold each employee’s hourly pay rate. Wages: an array of seven doubles to...
Write a program in C, that uses standard input and output to ask the user to...
Write a program in C, that uses standard input and output to ask the user to enter a sentence of up to 50 characters, the ask the user for a number between 1 & 10. Count the number of characters in the sentence and multiple the number of characters by the input number and print out the answer. Code so far: char sentence[50]; int count = 0; int c; printf("\nEnter a sentence: "); fgets(sentence, 50, stdin); sscanf(sentence, %s;    for(c=0;...
Write a program in C++ Write three new functions, mean() and standard_deviation(). Modify your code to...
Write a program in C++ Write three new functions, mean() and standard_deviation(). Modify your code to call these functions instead of the inline code in your main(). In addition, add error checking for the user input. If the user inputs an incorrect value prompt the user to re-enter the number. The flow of the code should look something like: /** Calculate the mean of a vector of floating point numbers **/ float mean(vector& values) /** Calculate the standard deviation from...
Write a program that ask the user for three integers. Use two functions to determine the...
Write a program that ask the user for three integers. Use two functions to determine the largest and smallest number of the three. One function will determine the largest number, and the other function will determine the smallest number. (6 points) In c++ using functions.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT