1365 - Aceeasi Paritate: Difference between revisions

From Bitnami MediaWiki
Miriam (talk | contribs)
m restrictii
Miriam (talk | contribs)
m cuprins
Line 3: Line 3:


----
----
==Cuprins==
*[[0415 - unique#Cerin%C5%A3a|1Cerinţă]]
*[[0415 - unique#Date%20de%20intrare|2Date de intrare]]
*[[0415 - unique#Date de ie%C8%99ire|3Date de ieșire]]
*[[0415 - unique#Restric%C5%A3ii %C5%9Fi preciz%C4%83ri|4Restricţii şi precizări]]
*[[0415 - unique#Exemple|5Exemple]]
**[[0415 - unique#Exemplul%201|5.1Exemplul 1]]
**[[0415 - unique#Exemplul%202|5.2Exemplul 2]]
*[[0415 - unique#Rezolvare|6Rezolvare]]
==Cerinţă==
==Cerinţă==
Se dau <code>n</code> numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică.
Se dau <code>n</code> numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică.

Revision as of 06:52, 19 March 2023

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>