Informatică, întrebare adresată de Nonesense, 8 ani în urmă

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 de Apollyon
1

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;

}

Alte întrebări interesante