3284 - Calc Par Impar

From Bitnami MediaWiki
Revision as of 16:57, 22 April 2023 by MiclausIoana (talk | contribs)

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

<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):

   cnt = 0
   while n:
       n //= 10
       cnt += 1
   return cnt

if _name_ == '_main_':

   n = citeste_n()
   valori = citeste_valori(n)
   calcParImpar(valori)
     

</syntaxhighlight>