# PBinfo #2823 – CifreImpare – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Subprogramul cifreImpare are un singur parametru, n, prin care primește un număr natural cu toate cifrele nenule (n∈[1,109]). Subprogramul returnează numărul obținut prin eliminarea tuturor cifrelor impare din n, respectiv -1 dacă nu există astfel de cifre sau dacă toate cifrele lui n sunt impare.

Scrieți definiţia completă a subprogramului.

Exemplu
Dacă n=23541, subprogramul returnează valoarea 24, iar dacă n=28, subprogramul returnează valoarea -1.

Important
Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.

## Cod sursă C++

```cpp
int cifreImpare(int n) {
    int rez = 0, p = 1, toate_cifrele_impare = 1, are_cifre_impare = 0;
    while (n) { int c = n % 10;
        if (c % 2 == 0) {
            toate_cifrele_impare = 0;
            rez = rez + c * p;
            p = p * 10;
        } else
            are_cifre_impare = 1;
        n = n / 10;
    }
    if (toate_cifrele_impare) return -1;
    if (are_cifre_impare == false) return -1;
    return rez;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2823)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2823/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2823/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
