0276 - PareImpare

From Bitnami MediaWiki
Revision as of 15:34, 26 March 2023 by Csula Beatrice (talk | contribs) (Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/276/pareimpare -PareImpare] ---- == Cerinţa == Se dau cel mult '''100.000''' de numere naturale, cu cel mult 2 cifre fiecare. Afişaţi în ordine strict crescătoare valorile impare care se regăsesc printre valorile date, şi în ordine strict descrescătoare valorile pare care se regăsesc printre valorile date. == Date de intrare == Fişierul de intrare '''pareimpare.in''' conţine cel mult '''100.000''' de numere naturale, cu cel m...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursa: -PareImpare


Cerinţa

Se dau cel mult 100.000 de numere naturale, cu cel mult 2 cifre fiecare. Afişaţi în ordine strict crescătoare valorile impare care se regăsesc printre valorile date, şi în ordine strict descrescătoare valorile pare care se regăsesc printre valorile date.

Date de intrare

Fişierul de intrare pareimpare.in conţine cel mult 100.000 de numere naturale, cu cel mult 2 cifre fiecare, dispuse pe mai multe linii şi separate prin spaţii.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi in fişierul de ieşire pareimpare.out va conţine pe prima linie şirul valorilor impare, separate printr-un spaţiu, iar pe a doua linie şirul valorilor pare, separate printr-un spaţiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricţii şi precizări

  • în fişierul de intrare se află cel puţin un număr par şi cel puţin un număr impar

Exemple

Exemplul 1

pareimpare.in
75 12 3 3 18 75 1 3
Ieșire
Datele sunt corecte.
pareimpare.out
1 3 75
18 12

Exemplul 2

pareimpare.in
10 11 42 45 79
Ieșire
Datele sunt corecte.
pareimpare.out
11 45 79
42 10

Exemplul 3

pareimpare.in
75 77 71 99
Ieșire
Datele nu sunt comform restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0276 PareImpare


def pareimpare(vector_pare, vector_impare):

   f = open("pareimpare.out", "w")
   vector_impare.sort()
   vector_pare.sort(reverse=True)
   vector_impare.append(0)
   vector_pare.append(1)
   for i in range(len(vector_impare) - 1):
       if vector_impare[i] != vector_impare[i + 1]:
           f.write(str(vector_impare[i]))
           f.write(" ")
   f.write("\n")
   for i in range(len(vector_pare) - 1):
       if vector_impare[i] != vector_pare[i + 1]:
           f.write(str(vector_pare[i]))
           f.write(" ")


def conform_restrictiilor():

   vector = list()
   vector_pare = list()
   vector_impare = list()
   with open('pareimpare.in') as f:
       lines = f.readlines()
       for line in lines:
           for c in line.split():
               if c.isdigit() == True:
                   vector.append(int(c))
   if len(vector) > 100000:
       print("Datele nu sunt comform restricțiilor impuse.")
       exit()
   for x in vector:
       if x < 0 or x >= 100:
           print("Datele nu sunt comform restricțiilor impuse.")
           exit()
       elif x % 2 == 0:
           vector_pare.append(x)
       else:
           vector_impare.append(x)
   if len(vector_pare) == 0 or len(vector_impare) == 0:
       print("Datele nu sunt comform restricțiilor impuse.")
       exit()
   print("Datele sunt corecte.")
   return vector_pare, vector_impare


if __name__ == '__main__':

   vector_pare, vector_impare = conform_restrictiilor()
   pareimpare(vector_pare, vector_impare)


</syntaxhighlight>