Удаление определенных цифр из числа используя только циклы C++

Пользователь вводит любое целое число. Необходимо из этого целого числа удалить все цифры 3 и 6 и вывести обратно на экран.
Мне нужно выполнить это, используя самые основы языка, то есть с помощью циклов


Ответы (2 шт):

Автор решения: Harry

А зачем циклы? :) Так сойдет?

void del36(unsigned int n)
{
    if (n) {
        del36(n / 10);
        if (n%10 != 3 && n % 10 != 6) cout << n%10;
    }
}

Ну, чистый введенный 0 обработайте отдельно...

→ Ссылка
Автор решения: Павел Ериков

Вот пример кода с комментариями:

int main() {
int n;
cin >> n;
//Пропустим первые цифры 3 и 6
while (n > 0 && (n % 10 == 3 || n % 10 == 6))
    n /= 10;
//Первая цифра не 3 и не 6
int without36 = n % 10;
int i = 10;
while (n > 0) {
    //Делим на 10, чтобы перейти к следующей цифре
    n /= 10;
    if (n % 10 != 3 && n % 10 != 6) {
        //Вставляем цифру в начало числа
        without36 += (n % 10) * i;
        i *= 10;
    }
}

cout << without36 << endl;
}

Например есть число 132, тогда после 1 цикла у нас так и останется число 132, и в переменную without36 мы запишем цифру 2. Войдя во второй цикл мы сразу пропустим 2 и получим 13. И переходим на следующую итерацию т.к. последняя цифра 3. Далее остается 1 и это не 3 и не 6 значит к without36 добавим 1*i = 10 получив without36 = 12.

Я думаю можно проще и элегантней написать алгоритм, но...

ДОПОЛНЕНО:

Вот код по красивше) от @Harry:

int n;
cin >> n;
int without36 = 0;
int i = 1;
while (n) {
    if (n % 10 != 3 && n % 10 != 6) {
        without36 += (n % 10) * i;
        i *= 10;
    }
    n /= 10;
}

cout << without36 << endl;
→ Ссылка