Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

C++ JUST TASK 2 For this project, you will practice decomposing a problem into f

ID: 3595890 • Letter: C

Question

C++ JUST TASK 2

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.

Explanation / Answer

As you asked for only task 2 :

I am using the functions written already from task 0,1.

int trasformNum( int n)

{

int sum_num_digits = 0; /* to store the sum of digits in the given number */

sum_num_digits = sumDigits( n );

/* we have to add the remainig number to make the sum 9 , so we add the number 9 - sum_num_digits */

/* so that we get the desired number that is divisible by 9 */

std :: cout << "The transformed number is: " << ( n + 9 - sum_num_digits );  

return ( n + 9 - sum_num_digits );

}

/* hope this helps */

/* if any queries please comment */

/* thank you */

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote