Удаление определенных цифр из числа используя только циклы C++
Пользователь вводит любое целое число. Необходимо из этого целого числа удалить все цифры 3 и 6 и вывести обратно на экран.
Мне нужно выполнить это, используя самые основы языка, то есть с помощью циклов
Ответы (2 шт):
А зачем циклы? :) Так сойдет?
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;