3284 - Calc Par Impar: Diferență între versiuni
De la Universitas MediaWiki
(Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/3284/calcparimpar] == Cerință == Se dau '''n''' numere naturale. Considerăm poziţiile lor numerotate de la '''1''' la '''n'''. Să se determine cea mai mare valoare memorată pe o poziţie pară şi cea mai mică valoare de două cifre aflată pe o poziţie impară. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spații. == Date de ieșire == Programul va a...) |
Fără descriere a modificării |
||
Linia 19: | Linia 19: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line="1"> | <syntaxhighlight lang="python" line="1"> | ||
def citeste_n(): | |||
while True: | |||
try: | |||
n = int(input("Introduceti numarul de valori: ")) | |||
if n >= 2 and n <= 20: | |||
print("Datele sunt corecte.") | |||
return n | |||
else: | |||
print("Numarul de valori trebuie sa fie intre 2 si 20.") | |||
except ValueError: | |||
print("Trebuie introduse doar numere intregi.") | |||
def citeste_valori(n): | |||
valori = [] | |||
for i in range(n): | |||
while True: | |||
try: | |||
valoare = int(input("Introduceti o valoare: ")) | |||
if valoare >= 1 and valoare <= 1000000000 : | |||
print("Datele sunt corecte.") | |||
valori.append(valoare) | |||
break | |||
else: | |||
print("Valoarea trebuie sa fie intre 1 si 1.000.000.000.") | |||
except ValueError: | |||
print("Trebuie introduse doar valori naturale.") | |||
return valori | |||
def calcParImpar(valori): | |||
max_par = -1 | |||
min_impar = 100 | |||
for i in range(1, len(valori) + 1): | |||
x = valori[i - 1] | |||
if i % 2 == 0: | |||
if x > max_par: | |||
max_par = x | |||
else: | |||
if nrcif(x) == 2 and x < min_impar: | |||
min_impar = x | |||
if max_par == -1: | |||
print("-1", end=" ") | |||
else: | |||
print(max_par, end=" ") | |||
if min_impar == 100: | |||
print("-1") | |||
else: | |||
print(min_impar) | |||
def nrcif(n): | def nrcif(n): | ||
cnt = 0 | cnt = 0 | ||
Linia 26: | Linia 76: | ||
return cnt | return cnt | ||
if _name_ == '_main_': | |||
n = citeste_n() | |||
valori = citeste_valori(n) | |||
calcParImpar(valori) | |||
</syntaxhighlight> | </syntaxhighlight> |
Versiunea de la data 22 aprilie 2023 16:57
Sursă: [1]
Cerință
Se dau n numere naturale. Considerăm poziţiile lor numerotate de la 1 la n. Să se determine cea mai mare valoare memorată pe o poziţie pară şi cea mai mică valoare de două cifre aflată pe o poziţie impară.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Programul va afișa pe ecran numerele x şi y, pe același rând și separate prin spațiu, reprezentând, în ordine, cele două valori calculate. În cazul în care nu sunt valori de două cifre pe poziții impare se va afișa -1 în contul valorii y.
Restricții și precizări
- 2 ≤ n ≤ 20
- cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplu
- Intrare
- 5
- 1 3 3 4 8
- Ieșire
- 4 -1
Rezolvare
def citeste_n():
while True:
try:
n = int(input("Introduceti numarul de valori: "))
if n >= 2 and n <= 20:
print("Datele sunt corecte.")
return n
else:
print("Numarul de valori trebuie sa fie intre 2 si 20.")
except ValueError:
print("Trebuie introduse doar numere intregi.")
def citeste_valori(n):
valori = []
for i in range(n):
while True:
try:
valoare = int(input("Introduceti o valoare: "))
if valoare >= 1 and valoare <= 1000000000 :
print("Datele sunt corecte.")
valori.append(valoare)
break
else:
print("Valoarea trebuie sa fie intre 1 si 1.000.000.000.")
except ValueError:
print("Trebuie introduse doar valori naturale.")
return valori
def calcParImpar(valori):
max_par = -1
min_impar = 100
for i in range(1, len(valori) + 1):
x = valori[i - 1]
if i % 2 == 0:
if x > max_par:
max_par = x
else:
if nrcif(x) == 2 and x < min_impar:
min_impar = x
if max_par == -1:
print("-1", end=" ")
else:
print(max_par, end=" ")
if min_impar == 100:
print("-1")
else:
print(min_impar)
def nrcif(n):
cnt = 0
while n:
n //= 10
cnt += 1
return cnt
if _name_ == '_main_':
n = citeste_n()
valori = citeste_valori(n)
calcParImpar(valori)