1399 - Sortare in Trepte
De la Universitas MediaWiki
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. Apoi să urmeze elementele nule, urmate de numerele pozitive ordonate descrescător.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieşire
Programul va afișa pe ecran pe prima linie șirul ordonat conform cerinței.
Restricții și precizări
- 1 ⩽ n ⩽ 1000
- -10000 ⩽ elementele șirului ⩽ 10000
Exemplul 1
- 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
- Intare
- 2
- -100000
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Rezolvare
# 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.")