Задача с циклом с постусловием на 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); //  пока введено число       
}
→ Ссылка