Să se scrie un program care să determine produsul cifrelor impare ale unui număr natural citit de la tastatură

Să se scrie un program care să determine produsul cifrelor impare ale unui număr natural citit de la tastatură.

Date de intrare
Programul va citi de la tastatură un număr natural.

Date de ieşire
Programul va afişa pe ecran produsul cifrelor impare ale numărului citit.

Restricţii şi precizări

numărul citit va fi mai mic decât 2 31
dacă numărul nu conţine cifre impare atunci se va afişa valoarea -1

Să se scrie un program care să determine produsul cifrelor impare ale unui număr natural citit de la tastatură

Răspuns:
Pentru a rezolva această problemă, vom parcurge fiecare cifră a numărului și vom înmulți doar cifrele impare. Dacă nu este găsită nicio cifră impară, se va afișa -1.

Etapele rezolvării:

  1. Se citește numărul de la tastatură.
  2. Se inițializează o variabilă pentru produs (de exemplu prod) cu valoarea 1.
  3. Se inițializează un indicator (de exemplu gasitImpara) cu valoarea 0 pentru a semnala dacă am găsit sau nu vreo cifră impară.
  4. Cât timp numărul este mai mare decât 0:
    • Extrage ultima cifră: cifra = numar % 10.
    • Verifică dacă este impară (cifra % 2 != 0).
    • Dacă e impară:
      • prod = prod * cifra (actualizează produsul)c
      • gasitImpara = 1 (reține că am găsit cel puțin o cifră impară)
    • Împarte numărul la 10 pentru a trece la următoarea cifră.
  5. După încheierea ciclului, dacă gasitImpara == 1, se afișează valoarea lui prod. În caz contrar, se afișează -1.

Exemplu de cod în C:

#include <stdio.h>

int main() {
    unsigned long numar;
    scanf("%lu", &numar);

    unsigned long prod = 1;
    int gasitImpara = 0;
    unsigned long temp = numar;

    while (temp > 0) {
        int cifra = temp % 10;
        if (cifra % 2 != 0) {
            prod *= cifra;
            gasitImpara = 1;
        }
        temp /= 10;
    }

    if (gasitImpara == 0) {
        printf("-1\n");
    } else {
        printf("%lu\n", prod);
    }

    return 0;
}

Exemple și rezultate:

Exemplu Număr Cifre Impare Produsul Cifrelor Impare Rezultat Afișat
1234 1, 3 1 * 3 = 3 3
24680 - - -1
1357 1, 3, 5, 7 1 * 3 * 5 * 7 = 105 105
909 9, 9 9 * 9 = 81 81

Observați că în cazul în care numărul nu conține cifre impare (ex. 24680), se afișează -1.

@Dersnotu