Se dă un număr natural n. Să se formeze un nou număr cu cifrele sale impare. Exemplu:
n=578432 – noul număr ce se afișează 573.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
int lungimeNumar(long long numar);
int main() {
long long numarCitit{}, numarFinal{};
std::cout << "Introdu un numar >> ";
std::cin >> numarCitit;
for (int i{ lungimeNumar(numarCitit) - 1 }; i >= 0; i--) {
// calculăm puterea lui 10 a cifrei curente (ca să luăm de la stânga la dreapta, dacă nu făceam cu puteri luam de la dreapta la stânga iar rezultatul trebuia inversat într-un alt while/for)
long long putereaLui10{ static_cast<long long>(std::pow(10, i)) };
// pentru numărul 1024 prima putere va fi 10^(i-1) adică 10^3 (1000)
int cifraCurenta{ (numarCitit / putereaLui10) % 10 };
// când împărțim 1024 la 1000 rezultatul e 1.024 (iar cifraCurenta fiind int rămânem cu 1), 1 % 10 = 1
// dacă cifra curentă e impară o adăugăm la numărul final
if (cifraCurenta % 2 != 0) {
numarFinal = numarFinal * 10 + cifraCurenta;
}
// iar procesul se tot repetă, o să avem după 10^2 (care e 100)
// 1024 / 100 e 10.24 (rămânem cu 10) iar 10 % 10 = 0 (următoarea cifră), ea fiind pară n-o adăugăm la număr
// ș.a.m.d.
}
std::cout << numarFinal << "\n";
return 0;
}
int lungimeNumar(long long numar)
{
int contorCifre{};
while (numar) {
++contorCifre;
numar /= 10;
}
return contorCifre;
}