👤
Solo16341
a fost răspuns

4. Considerăm un tablou unidimensional a cu n(n < 50) elemente numere naturale de cel mult 9 cifre. Să se realizeze un program care permite ştergerea elementului care are cel mai mare produs al cifrelor impare ce apar în scrierea sa. Dacă există mai multe elemente cu această proprietate, se va elimina cel de indice minim. În cadrul programului, se vor defini două subprograme recursive; funcția P. care determină produsul cifrelor impare ale unei valori primite printr-un parametru. subprogramul Del, care permite stergerea unui element dintr-un vector, al cărui indice este transmis prin parametrul întreg i Subprogramul va avea doi parametri referință, reprezentând tabloul din care se efectuează ştergerea şi lungimea acestuia. Ştergerea se va face prin deplasarea elementului a[i + 1] pe poziţia i, ş.a.m.d. Exemplu: Pentru n = 7sia = (384, 824, 21, 349, 122, 1268, 37) , se va afişa vectorul cu şase elemente: (384, 824, 21, 122, 1268, 37)​

Răspuns :

Pentru a rezolva această problemă, putem urma următorii pași:

1. Definim o funcție recursivă pentru a calcula produsul cifrelor impare ale unui număr.
2. Parcurgem vectorul și calculăm produsul cifrelor impare ale fiecărui element.
3. Identificăm elementul cu cel mai mare produs al cifrelor impare și ștergem primul element care îndeplinește această condiție.
4. Implementăm un subprogram pentru ștergerea unui element dintr-un vector.

```python
def produs_cifre_impare(n):
if n == 0:
return 1
cifra = n % 10
if cifra % 2 != 0:
return cifra * produs_cifre_impare(n // 10)
else:
return produs_cifre_impare(n // 10)

def Del(a, n, i):
for j in range(i, n - 1):
a[j] = a[j + 1]
return n - 1

def main():
n = int(input("Introduceți numărul de elemente din vector: "))
a = []
print("Introduceți elementele vectorului:")
for _ in range(n):
a.append(int(input()))

max_produs_impar = 0
indice_max_produs_impar = -1

for i in range(n):
produs_impar = produs_cifre_impare(a[i])
if produs_impar > max_produs_impar:
max_produs_impar = produs_impar
indice_max_produs_impar = i

if indice_max_produs_impar != -1:
n = Del(a, n, indice_max_produs_impar)

print("Vectorul rezultat este:")
print(a[:n])

if __name__ == "__main__":
main()
```

Aceasta este o implementare în Python a problemei descrise. Programul va solicita utilizatorului să introducă lungimea și elementele vectorului, va identifica elementul cu cel mai mare produs al cifrelor impare și îl va șterge din vector. Apoi, va afișa vectorul rezultat.