0900 – OrdonareF1

From Bitnami MediaWiki

Sursa: OrdonareF1


Cerinţă[edit | edit source]

Se dă un șir cu n elemente întregi. Să se ordoneze descrescător elementele vectorului.

Date de intrare[edit | edit source]

Programul va citi de la tastatură valoarean, apoi n numere întregi reprezentând elementele șirului.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se va afișa noul vector, obținut în urma ordonării descrescătoare a tuturor elementelor vectorului. În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!".

Restricţii şi precizări[edit | edit source]

  • 1 <= n <= 1000
  • valorile elementelor șirului vor fi < 1.000.000.000

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 6
Introduceti 6 numere separate prin spatiu:63 273 9 83 93 123
Ieșire
Datele introduse sunt corecte!
Noul vector este: [273, 123, 93, 83, 63, 9]

Exemplul 2[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 123456
Ieșire
Datele introduse sunt incorecte!

Exemplul 3[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 5
Introduceti 5 numere separate prin spatiu:13 1 31 31 1 3 1
Ieșire
Datele introduse sunt incorecte!

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def is_integer(value):

   return value.isdigit()


def verificare_nr_elemente(n):

   if is_integer(n):
       if 0 < int(n) <= 1000:
           return n
       else:
           print("Datele introduse sunt incorecte!")
           exit()
   else:
       print("Datele introduse sunt incorecte!")
       exit()


def verificare_vector(n, vector):

   if len(vector) != int(n):
       print("Datele introduse sunt incorecte!")
       exit()
   else:
       for i in vector:
           if is_integer(i):
               if int(i) < 1000000000:
                   continue
               else:
                   print("Datele introduse sunt incorecte!")
                   exit()
           else:
               print("Datele introduse sunt incorecte!")
               exit()


def ordonare_descrescator(sir):

   lista_sortata = sorted(sir, reverse=True)
   print("Noul vector este:",lista_sortata)


if __name__ == '__main__':

   n = input("Introduceti numarul de elemente a sirului: ")
   verificare_nr_elemente(n)
   elem = input(f"Introduceti {n} numere separate prin spatiu:").split()
   verificare_vector(n, elem)
   lst_int = list(map(int, elem))
   print("Datele introduse sunt corecte!")
   ordonare_descrescator(lst_int)



</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program primește ca intrare un șir de numere întregi și le sortează în ordine descrescătoare.

Funcția is_integer(value) este o funcție simplă care primește o valoare și returnează adevărat dacă valoarea este un număr întreg sau fals în caz contrar.

Funcția verificare_nr_elemente(n) verifică dacă n este un număr întreg valid și dacă este între 1 și 1000. Dacă n nu este valid sau nu este în intervalul specificat, programul afișează "Datele introduse sunt incorecte!" și se termină prin apelul funcției exit().

Funcția verificare_vector(n, vector) verifică dacă vectorul are lungimea corectă și dacă toate elementele sale sunt numere întregi valide și mai mici decât 1 miliard. Dacă vectorul nu are lungimea corectă sau conține elemente invalide, programul afișează "Datele introduse sunt incorecte!" și se termină prin apelul funcției exit().

Funcția ordonare_descrescator(sir) primește ca argument o listă sir de numere întregi și returnează lista sortată în ordine descrescătoare utilizând funcția built-in sorted() cu parametrul reverse=True.

În funcția principală, programul primește input-ul de la utilizator pentru n și elem și apoi verifică validitatea acestor intrări utilizând funcțiile verificare_nr_elemente(n) și verificare_vector(n, elem). Dacă toate intrările sunt valide, programul afișează "Datele introduse sunt corecte!" și apoi se continuă cu apelul funcției ordonare_descrescator(lst_int). La final, programul afișează lista sortată descrescător.