1365 - Aceeasi Paritate

From Bitnami MediaWiki
Revision as of 06:52, 19 March 2023 by Miriam (talk | contribs) (cuprins)

Sursa: aceeasi_paritate


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>