My problem is that I'm having to take a 5-digit integer input given by the user, and separate the integer into its individual digits. I then need to print those digits in reverse order and also print out the sum of those digits. Here is what I have coded so far to separate the 5-digit integer into its individual digits. Please note that I am limited to using integer division and modulo operators for separating the integer into its digits.
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter a five-digit number: ";
cin >> number;
cout << number / 10000 << " ";
number = number % 10000;
cout << number / 1000 << " ";
number = number % 1000;
cout << number / 100 << " ";
number = number % 100;
cout << number / 10 << " ";
number = number % 10;
cout << number << endl;
return 0;
}
For example, when the user inputs a 5-digit number like 77602, the program should output it as
7 7 6 0 2 and the sum of the digits is 22.
How do I go about printing this in reverse order as well as the sum of the individual digits?
Edit: Few spelling and grammatical errors.
It's a lot easier to reverse a string than an integer. It's also a lot easier to accumulate individual digits of a string containing a number than an integer. Try this:
#include <iostream>
#include <string>
#include <algorithm>
int main(int argc, char *argv[])
{
std::string number;
int accum = 0;
std::cout << "Enter a five digit number: ";
std::cin >> number;
if (number.length() != 5)
{
std::cout << std::endl << "I asked for five digits!" << std::endl;
return 0;
}
for (int i = 0; i < 5; i++)
{
if (number.at(i) < '0' || number.at(i) > '9')
{
std::cout << std::endl << "Non-integer string entered" << std::endl;
return 0;
}
accum += (number.at(i) - '0');
}
std::reverse(number.begin(), number.end());
std::cout << "Reversed: " << number << std::endl << "Sum of digits: " << accum << std::endl;
return 0;
}
A simple solution using the same logic and tools of your code..
int sum = 0;
for(int i = 0; i < 5; ++i)
{
int digit = number % 10;
sum += digit;
cout << digit << " ";
number /= 10;
}
cout << "\nSum of digits: " << sum << "\n";
This is probably easiest solution for you to understand:
#include <iostream>
using namespace std;
int main()
{
int number;
int number2;
int numberReverse;
int sum = 0;
cout << "Enter a five-digit number: ";
cin >> number;
numberReverse = number;
cout << number / 10000 << " ";
sum = sum + number/10000;
number = number % 10000;
cout << number / 1000 << " ";
sum = sum + number/1000;
number = number % 1000;
cout << number / 100 << " ";
sum = sum + number/100;
number = number % 100;
cout << number / 10 << " ";
sum = sum+number/10;
number = number % 10;
cout << number << endl;
sum = sum+number;
cout << "Reverse: " << endl;
number2 = numberReverse%10;
cout << number2 << " ";
number2 = (numberReverse/10)%10;
cout << number2 << " ";
number2 = (numberReverse/100)%10;
cout << number2 << " ";
number2 = (numberReverse/1000)%10;
cout << number2 << " ";
number2 = (numberReverse/10000)%10;
cout << number2 << endl;
cout << "Sum is " << sum;
return 0;
}
I think, you need to do something like this:
int number;
... some IO operations ...
std::vector<int> digits;
do {
digits.push_back(number % 10);
number /= 10;
} while (number);
After this all you need to do is 2-3 loops through vector digits
for (std::size_t k = digits.size() - 1; k >= 0; --k)
std::cout << digits[k] << " ";
std::cout << std::endl;
for (std::size_t k = 0; k < digits.size(); ++k)
std::cout << digits[k] << " ";
std::cout << std::endl;
int sum = 0;
for (std::size_t k = 0; k < digits.size(); ++k)
sum += digits[k];
std::cout << sum;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.