1399 - Sortare in Trepte: Difference between revisions
No edit summary |
|||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
== Cerinţa == | == Cerinţa == | ||
Se citește un șir cu '''n''' numere întregi. Să se rearanjeze elementele șirului astfel ca numerele negative să fie ordonate descrescător. | Se citește un șir cu '''n''' numere întregi. Să se rearanjeze elementele șirului astfel ca numerele negative să fie ordonate descrescător. Apoi să urmeze elementele nule, urmate de numerele pozitive ordonate descrescător. | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spații. | Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spații. | ||
Line 15: | Line 16: | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: -3 -41 0 8 8 4 1 | : -3 -41 0 8 8 4 1 | ||
<br> | |||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intare | ; Intare | ||
Line 21: | Line 23: | ||
; Ieșire | ; Ieșire | ||
: Datele introduse nu corespund restricțiilor impuse. | : Datele introduse nu corespund restricțiilor impuse. | ||
<br> | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> |
Latest revision as of 12:54, 13 November 2023
Cerinţa[edit | edit source]
Se citește un șir cu n numere întregi. Să se rearanjeze elementele șirului astfel ca numerele negative să fie ordonate descrescător. Apoi să urmeze elementele nule, urmate de numerele pozitive ordonate descrescător.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran pe prima linie șirul ordonat conform cerinței.
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000
- -10000 ⩽ elementele șirului ⩽ 10000
Exemplul 1[edit | edit source]
- Intare
- 7
- 1 -41 8 -3 4 8 0
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- -3 -41 0 8 8 4 1
Exemplul 2[edit | edit source]
- Intare
- 2
- -100000
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 1399 Sortare in Trepte
- Definim funcția de verificare a valorii n și a elementelor șirului
def verificare(numar_valoare, sir_val):
# Verificăm dacă n respectă restricțiile problemei if 1 <= numar_valoare <= 1000: # Verificăm dacă fiecare element al șirului respectă restricțiile problemei for element in sir_val: if not (-10000 <= element <= 10000): # Dacă un element nu respectă restricțiile, ridicăm o excepție raise ValueError # Dacă toate valorile sunt valide, returnăm True return True else: # Dacă valoarea n nu este validă, ridicăm o excepție raise ValueError
- Definim funcția pentru sortarea șirului
def sortare(sir_val):
# Separam numerele în funcție de semn negative = [x for x in sir_val if x < 0] zero = [x for x in sir_val if x == 0] pozitive = [x for x in sir_val if x > 0] # Sortăm fiecare listă în mod corespunzător negative.sort(reverse=True) pozitive.sort(reverse=True) # Concatenăm listele pentru a obține șirul final sir_final = negative + zero + pozitive # Returnăm șirul sortat return sir_final
- Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == '__main__':
try: # Citim numărul de elemente din șir n = int(input("Introduceti numarul de elemente din sir: ")) # Citim elementele șirului sir = list(map(int, input("Introduceti elementele sirului, separate prin spatii: ").split()))
# Verificăm dacă datele introduse sunt valide if verificare(n, sir): # Dacă datele sunt valide, afișăm un mesaj de confirmare print("Datele introduse corespund restricțiilor impuse.")
# Sortăm și afișăm șirul print(' '.join(map(str, sortare(sir))))
# Tratăm cazul în care datele introduse nu sunt valide except ValueError: # Afișăm un mesaj de eroare print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>