1399 - Sortare in Trepte
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>