👤

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ăspuns :

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;

}

Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!


En Trainingsy: Alte intrebari