Другие языки программирования и технологии

циклы с++ Дано натуральное N. Найти сумму всех цифр числа и вывести на экран все цифры в обратном порядке.

100000000000000000000000000000000000000000000000000000000000000 это тоже натуральное? Тогда так.. .

#include <iostream>
#include <string>
using namespace std;
bool check_natural(string&);
void reverse(string&);
int sum_digit(string&);
int main() {
locale::global(locale(""));
string natural;
bool flag_error = false;
cout << " Введите любое натуральное число: ";
do {
if (flag_error) cout << "\a Ошибка! Повторите ввод натурального числа: ";
fflush(stdin);
getline(cin, natural);
flag_error = true;
} while (!check_natural(natural));
cout << " Сумма всех цифр равна: " << sum_digit(natural) << endl;
reverse(natural);
cout << " Обратная запись числа: " << natural << endl;
cin.sync();
cin.get();
return 0;
}
int sum_digit(string& natural) {
int nul = int('0'), sum = 0;
size_t size = natural.size();
for (size_t n = 0; n < size; ++n) sum += natural[n] - nul;
return sum;
}
bool check_natural(string& natural) {
bool flag_error = true;
size_t size = natural.size();
if (!size) flag_error = false;
else {
for (size_t n = 0; n < size; ++n) {
if (!isdigit(natural[n])) {
flag_error = false;
break;
}
}
}
return flag_error;
}
void reverse(string& natural) {
size_t size = natural.size();
char tmp;
for (size_t n = 0, m = size - 1; n < m; ++n, --m) {
tmp = natural[n];
natural[n] = natural[m];
natural[m] = tmp;
}
}
Жасулан J
Жасулан J
54 515
Лучший ответ

Похожие вопросы