0272 - Pare Sort

From Bitnami MediaWiki

Cerința

Se dă un şir cu n elemente, numere naturale nenule cu cel mult 4 cifre fiecare. Afişaţi, în ordine crescătoare, valorile pare din şir. Dacă şirul nu conţine nici o valoare pară, se va afişa mesajul nu exista.

Date de intrare

Fişierul de intrare paresort.in conţine pe prima linie numărul n; urmează cele n elemente ale şirului, dispuse pe mai multe linii, separate prin spaţii.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", fişierul de ieşire paresort.out va conţine pe prima linie numărul m, numărul de valori pare din şir, iar pe a două linie aceste valori, în ordine crescătoare, separate printr-un spaţiu. Dacă şirul nu conţine nici un număr par, fişierul va conţine doar mesajul nu exista, situat pe prima linie. Iar dacă condițiile nu sunt îndeplinite, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

Restricții și precizări

  • 1 ≤ n ≤ 1000

Exemplu 1

paresort.in
9
2 3 1 4 7 2 5 8 6
paresort.out
Datele introduse corespund restricțiilor impuse.
5
2 2 4 6 8


Exemplu 2

paresort.in
0
paresort.out
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0272 PareSort

def validare(nr_elemente, sir_numere):

   if nr_elemente > 255:
       raise ValueError
   for numar in sir_numere:
       if numar <= 0 or numar >= 10000:
           raise ValueError
   if nr_elemente != len(sir_numere):
       raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse\n")


def paresort(sir_numere):

   sir_pare = []
   for numar in sir_numere:
       if numar % 2 == 0:
           sir_pare.append(numar)
   if len(sir_pare) == 0:
       file_out.write("nu exista")
       return
   file_out.write(str(len(sir_pare)) + "\n")
   sir_pare.sort()
   for numar in sir_pare:
       file_out.write(str(numar) + " ")


if __name__ == '__main__':

   file_in = open("paresortin.txt", "r")
   file_out = open("paresortout.txt", "w")
   try:
       n = file_in.readline()
       sir = file_in.readline()
       n = int(n)
       sir = sir.split()
       sir = list(map(int, sir))
       validare(n, sir)
       paresort(sir)
   except ValueError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")

</syntaxhighlight>