Question: Language is C++ In this problem, you will implement the function ExponentTooverflow with parameters int starting_value value and an unsigned int base. The function will

Language is C++ Language is C++ In this problem, you will implement the functionExponentTooverflow with parameters int starting_value value and an unsigned int base. Thefunction will multiply starting_value by increasing powers of base (base^1, base^ 2, .... , base^ (n1), base n) until integer overflow is observed.

In this problem, you will implement the function ExponentTooverflow with parameters int starting_value value and an unsigned int base. The function will multiply starting_value by increasing powers of base (base^1, base^ 2 , .... , base^ (n1), base n) until integer overflow is observed. You can use pow from . Should you do so, keep in mind pow returns a double; your program must perform integer arithmetic when multiplying the base raised to the exponent against the starting_value. ExponentTo0verflow will return an std: : pair (you can use std: : make pair), where the pair's first field is the exponent that base was raised to that caused overflow when multiplied by int starting_value. The pair's second field is the number that was observed when overflow occurred. For example, if we invoked: - ExponentTo0verflow (1048,2); - The implementation of ExponentTo0verflow would multiply the original value 1048 by base 2 raised to increasing exponent values until overflow was observed. - On my machine, this occurred with exponent 21 and the overflow value observed was 2097152000. - That is, when we multiplied 1048221, integer overflow was observed for the first time: exponents 1 through 20 inclusive did not cause overflow. - ExponentTo0verflow (2000,2); - The implementation of ExponentTo0verflow would multiply the original value 2000 by base 2 raised to increasing exponent values until overflow was observed. - On my machine, this occurred with exponent 21 and the overflow value observed was 100663296. - That is, when we multiplied 2000221, integer overflow was observed for the first time: exponents 1 through 20 inclusive did not cause overflow. - ExponentTo0verflow (20000,4); - The implementation of ExponentTo0verflow would multiply the original value -20000 by base 4 raised to increasing exponent values until overflow was observed. O On my machine, this occurred with exponent 9 and the overflow value observed was 947912704. - For this case, why is the computed overflow value negative when the starting value passed to this function is 20000 ? Consider that on my machine: 2000048=1310720000 and 2000049= 947912704. Did you notice that 2000049 evaluates to a less negative value than 2000048? Consider that std: : numeric_limits: : min() returns 2,147,483,648 and that 2000049 should equal 5, 242,880,000. Do you see what's going on? Make sure you consider such cases for positive and negative starting_values! You can do this by comparing the value you computed with exponent n to the value computed with exponent n1

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!