0900 – OrdonareF1
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.