1399 - Sortare in Trepte: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == 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. =...
 
 
(2 intermediate revisions 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. apoi să urmeze elementele nule, urmate de numerele pozitive 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 8: Line 9:
* 1 ⩽ n ⩽ 1000
* 1 ⩽ n ⩽ 1000
* -10000 ⩽ elementele șirului ⩽ 10000
* -10000 ⩽ elementele șirului ⩽ 10000
== Exemplu ==
== Exemplul 1 ==
; Intare
; Intare
: 7
: 7
: 1 -41 8 -3 4 8 0
: 1 -41 8 -3 4 8 0
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: -3 -41 0 8 8 4 1
: -3 -41 0 8 8 4 1
<br>
== Exemplul 2 ==
; Intare
: 2
: -100000
; Ieșire
: Datele introduse nu corespund restricțiilor impuse.
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
if __name__ == "__main__":
# 1399 Sortare in Trepte
    # Citim numărul de elemente din șir
 
    n = int(input())
# Definim funcția de verificare a valorii n și a elementelor șirului
     # Citim elementele șirului
def verificare(numar_valoare, sir_val):
    sir = list(map(int, input().split()))
    # 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
     # Separam numerele în funcție de semn
     negative = [x for x in sir if x < 0]
     negative = [x for x in sir_val if x < 0]
     zero = [x for x in sir if x == 0]
     zero = [x for x in sir_val if x == 0]
     pozitive = [x for x in sir if x > 0]
     pozitive = [x for x in sir_val if x > 0]
     # Sortăm fiecare listă în mod corespunzător
     # Sortăm fiecare listă în mod corespunzător
     negative.sort(reverse=True)
     negative.sort(reverse=True)
Line 30: Line 55:
     # Concatenăm listele pentru a obține șirul final
     # Concatenăm listele pentru a obține șirul final
     sir_final = negative + zero + pozitive
     sir_final = negative + zero + pozitive
     # Afișăm șirul sortat
     # Returnăm șirul sortat
     print(' '.join(map(str, sir_final)))
     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>
</syntaxhighlight>

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>

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


  1. 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


  1. 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>