C++ loop calculating product of range gives wrong result above 5

  • Topic: C/C++ 
  • Thread starter Thread starter dnc1786
  • Start date Start date
  • Tags Tags
    C++ Homework
Join the discussion
Registration is free. Start your own thread to ask a follow-up.
1 reply · 3K views
dnc1786
Messages
1
Reaction score
0
I am not looking for an answer, just guidance...

My assignment is to ask the user for a number between 3 and 10 (inclusive). Using a loop, calculate the product of the numbers between 2 and that number. For example, if the user chooses 5, the result would be 2 x 3 x 4 x 5 = 120.

Sample run: When input is:
5
The output exactly matches
Please enter a number from 3 to 10: 5
2 x 3 x 4 x 5 = 120

So far I have come up with this, which works perfectly for input 3 through 5. However, the product is wrong when the input is anything above five and I am completely lost as to what is wrong with the code:

Code:
#include <iostream>
using namespace std;

int main (){
   int userInt = 0;
   int multiple = 2;
   int product = 1;
   
   
cout << "Please enter a number from 3 to 10: ";
cin >> userInt;
cout << userInt << endl;

if ((userInt < 3) || (userInt >= 11)){
   cout << "Please follow the directions!" << endl;
}
else {

   cout << "2";
   ++multiple; 
   
   while (multiple <= userInt){
      cout << " x " << multiple;
      ++multiple;
      product = product * multiple;
      
   }
cout << "  = " << product << endl;
}

return 0;
}
 
Last edited:
Physics news on Phys.org
I take it you finished your homework... In any case:

C++:
#include <iostream>
using namespace std;

int main (){
    int userInt = 0;
    count << "Please enter a number from 3 to 10: ";
    cin >> userInt;
    count << userInt<< endl;

    if (!(userInt >= 3 && userInt <= 10)) {
       count << "Please follow the directions!" << endl;
    } else {

    count << "2";
    uint multiplier = 2;
    uint result = userInt;
    while (userInt > 2) {
        count << " x " << ++multiplier;
        result *= (userInt - 1);
        userInt--;
    }

    count << " = " << result << endl;
}

    return 0;
}
Compile, debug and run here.