Задача с циклом с постусловием на c++
Составить программу вывода всех трёхзначных чисел, сумма цифр которого равна данному натуральному числу. В решении задачи необходимо использовать цикл с постусловием
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
int z, y, x, n, i;
setlocale(LC_ALL, "rus");
cout << "\nВведите натуральное n: ";
cin >> n;
z = y = i = 0;
x = 1;
do
{
if (n = x + y + z) cout << "\nКВВ x,y,z" << x*100+y*10+z;
z++;
if (z = 10) y++, z=0;
if (y = 10) x++, y = 0;
cout << "\nКВВ z" << z;
cout << "\nКВВ y" << y;
cout << "\nКВВ x" << x;
}
while (x <= 10);
}
Ответы (2 шт):
Автор решения: Georgy Firsov
→ Ссылка
Можно не так сильно заморачиваться:
size_t DigitSum(size_t number)
{
size_t sum{0};
while (number > 0)
{
sum += number % 10;
number /= 10;
}
return sum;
}
int main()
{
size_t requested_sum{0};
std::cin >> requested_sum;
size_t number{100};
do
{
if(DigitSum(number) == requested_sum) {
std::cout << number << std::endl;
}
number++;
} while(number < 1000);
return 0;
}
И да, как верно подметили в комментариях, не нужно путать = и == :)
Автор решения: AR Hovsepyan
→ Ссылка
int x = 0, y = 0, n, k;
if (cin >> n) { // если ввели заданное число
do {
cin >> k;
x = k / 100;
if (x && !(x / 10) ) { // если введено трехзначное число
y = k / 10; //вторая цифра
if (x + y % 10 + k % 10 == n)
cout << "число " << k << " удовлетворяет требованию\n";
}
} while (cin); // пока введено число
}