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:
Se citește numărul de la tastatură.
Se inițializează o variabilă pentru produs (de exemplu prod) cu valoarea 1.
Se inițializează un indicator (de exemplu gasitImpara) cu valoarea 0 pentru a semnala dacă am găsit sau nu vreo cifră impară.
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ă.
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.