Problem A
Hello World
You shall upload a single source file named hello.cpp, containing the definition of two functions;
-
parse_args (int argc, char * argv[]), and;
-
hello (char const * name, int count).
Requirements
-
parse_args is responsible for parsing/interpreting the command line arguments passed to the application, and shall return a std::pair with what to print, and how many times to print it.
parse_args shall handle all input errors by returning -1 as the second value of the returned std::pair, as well as printing a suitable error message on stderr.
-
hello is responsible for printing the hello world-string on stdout with the following semantics;
-
If the value zero is passed as the second parameter, nothing shall be printed.
-
If a value greater than zero is passed as the second argument (count), "Hello, " shall be printed followed by count space-delimited occurrences of the first argument.
The output shall end with an exclamation mark, followed by a new-line.
Note: hello ("KTH", 3) shall print Hello, KTH KTH KTH! (see sample invocations of an example program below) -
-
-
Correct output from your program shall be printed through std::cout, whereas potential error diagnostics (detected by parse_args) shall be printed through std::cerr. The error messages shall start with the word “error”, followed by the error message.
Sample output
> ./hello Hello, world! > ./hello "DD1387" Hello, DD1387! > ./hello "KTH" 3 Hello, KTH KTH KTH! > ./hello "KTH" 0 > ./hello "KTH" 2 Hello, KTH KTH! > ./hello "Malcom X" NaN error: 2nd argument must be an integral greater than zero! > ./hello kth dd1387 3 error: Too many arguments!