Question
C++ Program: For this project, you will practice decomposing a problem into functions. In the final part, you will also get some practice with pass-by-reference
C++ Program:
For this project, you will practice decomposing a problem into functions. In the final part, you will also get some practice with pass-by-reference functions. As
part of this lab is to also gain experience with integer operations, you are NOT allowed to convert numbers into strings and use string processing primitives.
TASK 0
Consider the standard decimal representation of a non-negative integer num. You wish to write a function that repetitively adds up the digits of a number until it eventually
results in a single-digit number. For example, given the number 234567, the first iteration results in 27 (=2+3+4+5+6+7), and the 2nd iteration results in 9 (=2+7). Since 9 is
a single-digit number, no more iterations are needed and 9 is returned. Write a function with the following prototype to do this: // Precondition: num > 0 // Postcondition: the
return value is the iterated sum of digits of num int sumDigits(int num); To do this, we first need to identify functions that are useful to doing this. In this case, a list of useful
function prototypes might be: int getDigit(int num, int index); // return the index'th digit of num int numDigits(int num); // return the number of digits in num You should have at
least these three functions, though you may have additional functions if you wish. Don't forget to write pre/post conditions for these functions. You may use library functions
defined in cmath (such as pow) if you wish, though you don't need to.
TASK 1 You need a driver program to test your above program. To do this, write a main function that
prompts for and input num, calls sumdigits and outputs the result. You may assume that the input is a positive number and do not need to do any error checking (but realize
that you would have to for a real program).
TASK 2 A well-known theorem of math states that the above sum is 9 iff the number is divisible by 9. Write a function that
modifies its argument number so that its divisible by 9. The function should add something to the right-most digit of the number if possible; otherwise it should subtract
something from that digit. An example use of this function might be: transformNum(n); cout << n; // prints 234567 if n was originally 234565 Write the transformNum function.
You should be able to reuse most of the code from earlier. Also modify the driver program to output the transformed number.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started