4318 - Cifre 20: Difference between revisions
No edit summary |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/4318/cifre20] | |||
== Cerinţa == | == Cerinţa == | ||
Se dă un șir cu | Se dă un șir cu un numar dat de elemente, numere naturale. Să se determine câte elemente ale șirului au număr impar de cifre. | ||
== Date de intrare == | == Date de intrare == | ||
Programul va citi de la tastatură numărul | Programul va citi de la tastatură numărul, apoi elementele șirului. | ||
== Date de ieşire == | == Date de ieşire == | ||
Programul va afişa pe ecran valoarea cerută. | Programul va afişa pe ecran valoarea cerută. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* | * numar ≤ 100 | ||
* elementele șirului sunt mai mici decât 10^9 | * elementele șirului sunt mai mici decât 10^9 | ||
== Exemplu == | == Exemplu == | ||
; Intrare | ; Intrare | ||
: 5 18 215 147 1256 7 | : 5 | ||
18 215 147 1256 7 | |||
; Ieșire | ; Ieșire | ||
: 3 | : 3 | ||
=== Explicatie === | === Explicatie === | ||
Elementele șirului cu număr impar de cifre sunt: 215 147 7. | Elementele șirului cu număr impar de cifre sunt: 215 147 7. | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | |||
def numar_impar_cifre(numar): | |||
""" | |||
Verifică dacă un număr are un număr impar de cifre. | |||
:param numar: Numărul de verificat. | |||
:return: True dacă numărul are un număr impar de cifre, False în caz contrar. | |||
""" | |||
numar_cifre = len(str(numar)) | |||
return numar_cifre % 2 == 1 | |||
def determina_numar_elemente_numar_impar_cifre(sir): | |||
""" | |||
Determină numărul de elemente dintr-un șir care au un număr impar de cifre. | |||
:param sir: Șirul de numere. | |||
:return: Numărul de elemente cu număr impar de cifre. | |||
""" | |||
contor = 0 | |||
for element in sir: | |||
if numar_impar_cifre(element): | |||
contor += 1 | |||
return contor | |||
def citeste_sir_elemente(numar): | |||
""" | |||
Citește elementele unui șir de numere de la tastatură. | |||
:param numar: Numărul de elemente din șir. | |||
:return: Șirul de numere citite. | |||
""" | |||
sir = [] | |||
for i in range(numar): | |||
while True: | |||
try: | |||
element = int(input(f"Introduceți elementul {i + 1}: ")) | |||
if element <= 0: | |||
print("Elementul trebuie să fie un număr natural pozitiv!") | |||
continue | |||
break | |||
except ValueError: | |||
print("Elementul trebuie să fie un număr natural pozitiv!") | |||
sir.append(element) | |||
return sir | |||
def main(): | |||
# Citim numărul de elemente din șir și validăm inputul | |||
while True: | |||
try: | |||
numar = int(input("Introduceți numărul de elemente din șir: ")) | |||
if numar <= 0: | |||
print("Numărul de elemente trebuie să fie un număr pozitiv!") | |||
continue | |||
break | |||
except ValueError: | |||
print("Numărul de elemente trebuie să fie un număr întreg pozitiv!") | |||
# Citim elementele șirului | |||
sir = citeste_sir_elemente(numar) | |||
# Determinăm numărul de elemente cu număr impar de cifre | |||
numar_elemente_numar_impar_cifre = determina_numar_elemente_numar_impar_cifre(sir) | |||
# Afișăm rezultatul | |||
print("Datele introduse corespund restricțiilor impuse.") | |||
print(f"Numărul de elemente cu număr impar de cifre este: {numar_elemente_numar_impar_cifre}") | |||
if __name__ == "__main__": | |||
main() | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Line 23: | Line 109: | ||
while True: | while True: | ||
try: | try: | ||
numar = int(input("Introduceți numărul de elemente din șir: ")) | |||
if | if numar <= 0: | ||
print(" | print("Numărul de elemente trebuie să fie un număr pozitiv!") | ||
continue | continue | ||
break | break | ||
except ValueError: | except ValueError: | ||
print(" | print("Numărul de elemente trebuie să fie un număr întreg pozitiv!") | ||
# Inițializăm un contor pentru numărul de elemente cu număr impar de cifre | # Inițializăm un contor pentru numărul de elemente cu număr impar de cifre | ||
contor = 0 | contor = 0 | ||
# | # Iterăm prin fiecare element din șir și verificăm dacă are număr impar de cifre | ||
for i in range( | for i in range(numar): | ||
# Citim elementul și validăm inputul | # Citim elementul și validăm inputul | ||
while True: | while True: | ||
try: | try: | ||
element = int(input(f" | element = int(input(f"Introduceți elementul {i+1}: ")) | ||
if element <= 0: | if element <= 0: | ||
print("Elementul trebuie | print("Elementul trebuie să fie un număr natural pozitiv!") | ||
continue | continue | ||
break | break | ||
except ValueError: | except ValueError: | ||
print("Elementul trebuie | print("Elementul trebuie să fie un număr natural pozitiv!") | ||
# Numărăm cifrele elementului și verificăm dacă este impar | # Numărăm cifrele elementului și verificăm dacă este impar | ||
numar_cifre = len(str(element)) | numar_cifre = len(str(element)) | ||
Line 51: | Line 138: | ||
contor += 1 | contor += 1 | ||
# Afișăm numărul de elemente cu număr impar de cifre | # Afișăm validarea inputului și numărul de elemente cu număr impar de cifre | ||
print(f" | print("Datele introduse corespund restricțiilor impuse.") | ||
print(f"Numărul de elemente cu număr impar de cifre este: {contor}") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 09:50, 15 May 2023
Sursa: [1]
Cerinţa
Se dă un șir cu un numar dat de elemente, numere naturale. Să se determine câte elemente ale șirului au număr impar de cifre.
Date de intrare
Programul va citi de la tastatură numărul, apoi elementele șirului.
Date de ieşire
Programul va afişa pe ecran valoarea cerută.
Restricții și precizări
- numar ≤ 100
- elementele șirului sunt mai mici decât 10^9
Exemplu
- Intrare
- 5
18 215 147 1256 7
- Ieșire
- 3
Explicatie
Elementele șirului cu număr impar de cifre sunt: 215 147 7.
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line>
def numar_impar_cifre(numar):
""" Verifică dacă un număr are un număr impar de cifre.
:param numar: Numărul de verificat. :return: True dacă numărul are un număr impar de cifre, False în caz contrar. """ numar_cifre = len(str(numar)) return numar_cifre % 2 == 1
def determina_numar_elemente_numar_impar_cifre(sir):
""" Determină numărul de elemente dintr-un șir care au un număr impar de cifre.
:param sir: Șirul de numere. :return: Numărul de elemente cu număr impar de cifre. """ contor = 0 for element in sir: if numar_impar_cifre(element): contor += 1 return contor
def citeste_sir_elemente(numar):
""" Citește elementele unui șir de numere de la tastatură.
:param numar: Numărul de elemente din șir. :return: Șirul de numere citite. """ sir = [] for i in range(numar): while True: try: element = int(input(f"Introduceți elementul {i + 1}: ")) if element <= 0: print("Elementul trebuie să fie un număr natural pozitiv!") continue break except ValueError: print("Elementul trebuie să fie un număr natural pozitiv!") sir.append(element) return sir
def main():
# Citim numărul de elemente din șir și validăm inputul while True: try: numar = int(input("Introduceți numărul de elemente din șir: ")) if numar <= 0: print("Numărul de elemente trebuie să fie un număr pozitiv!") continue break except ValueError: print("Numărul de elemente trebuie să fie un număr întreg pozitiv!")
# Citim elementele șirului sir = citeste_sir_elemente(numar)
# Determinăm numărul de elemente cu număr impar de cifre numar_elemente_numar_impar_cifre = determina_numar_elemente_numar_impar_cifre(sir)
# Afișăm rezultatul print("Datele introduse corespund restricțiilor impuse.") print(f"Numărul de elemente cu număr impar de cifre este: {numar_elemente_numar_impar_cifre}")
if __name__ == "__main__":
main()
</syntaxhighlight>
Rezolvare ver. 2
<syntaxhighlight lang="python" line>
- Citim numărul de elemente din șir și validăm inputul
while True:
try: numar = int(input("Introduceți numărul de elemente din șir: ")) if numar <= 0: print("Numărul de elemente trebuie să fie un număr pozitiv!") continue break except ValueError: print("Numărul de elemente trebuie să fie un număr întreg pozitiv!")
- Inițializăm un contor pentru numărul de elemente cu număr impar de cifre
contor = 0
- Iterăm prin fiecare element din șir și verificăm dacă are număr impar de cifre
for i in range(numar):
# Citim elementul și validăm inputul while True: try: element = int(input(f"Introduceți elementul {i+1}: ")) if element <= 0: print("Elementul trebuie să fie un număr natural pozitiv!") continue break except ValueError: print("Elementul trebuie să fie un număr natural pozitiv!") # Numărăm cifrele elementului și verificăm dacă este impar numar_cifre = len(str(element)) if numar_cifre % 2 == 1: contor += 1
- Afișăm validarea inputului și numărul de elemente cu număr impar de cifre
print("Datele introduse corespund restricțiilor impuse.") print(f"Numărul de elemente cu număr impar de cifre este: {contor}")
</syntaxhighlight>