1365 - Aceeasi Paritate
Sursa: aceeasi_paritate
Cuprins
Cerinţă
Se dau n numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere întregi, separate prin spații.
Date de ieșire
Programul va afișa pe ecran elementele noului șir de numere obținut după inserarea elementelor, separate prin câte un spațiu.
Restricţii şi precizări
- 1 <= n <= 100
- valorile elementelor șirului vor fi cuprinse între -1.000.000.000 și 1.000.000.000
Exemple
Exemplul 1
- Intrare
- 3
- 2 4 3
- Ieșire
- [2, 3.0, 4, 3]
Exemplul 2
- Intrare
- ads
- Ieșire
- Introduceti un numar intreg.
Exemplul 3
- Intrare
- 4
- 2 3 4 5 6
- Ieșire
- Trebuie sa introduceti exact 4 numere
Rezolvare
<syntaxhighlight lang="python" line="1"> def citire_n():
while True:
try:
n = int(input("Introduceti numarul de elemente: "))
if 1 <= n <= 100 and isinstance(n, int):
return n
print("Numarul trebuie sa fie intreg si cuprins intre 1 si 100.")
except ValueError:
print("Introduceti un numar intreg.")
def citire_sir(n):
"""
Functia citeste de la tastatura n numere intregi si le adauga intr-un sir pe care il returneaza
"""
sir = []
try:
input_string = input("Introduceti numerele separate prin spatiu: ")
input_list = input_string.split()
if len(input_list) != n:
print(f"Trebuie sa introduceti exact {n} numere")
return citire_sir(n)
for i in range(n):
x = int(input_list[i])
while x < -1000000000 or x > 1000000000:
print("Numarul trebuie sa fie cuprins intre -1000000000 si 1000000000")
x = int(input(f"Introduceti numarul {i+1}: "))
sir.append(x)
except ValueError:
print("Introduceti doar numere intregi separate prin spatiu")
return citire_sir(n)
return sir
def adauga_medie(sir):
"""
Functia primeste un sir de numere intregi si adauga intre oricare doua numere de aceeasi paritate media lor aritmetica
"""
i = 0
while i < len(sir)-1:
if sir[i] % 2 == 0 and sir[i+1] % 2 == 0:
media = (sir[i] + sir[i+1]) / 2
sir.insert(i+1, media)
i += 2
elif sir[i] % 2 != 0 and sir[i+1] % 2 != 0:
media = int((sir[i] + sir[i+1]) / 2)
sir.insert(i+1, media)
i += 2
else:
i += 1
if __name__ == '__main__':
n = citire_n() sir = citire_sir(n) adauga_medie(sir) print(sir)
</syntaxhighlight>