2083 – Ordon123

From Bitnami MediaWiki

Sursa: Ordon123


Cerinţă[edit | edit source]

Se dă un șir cu n elemente întregi de tipul 1, 2 sau 3. Să se ordoneze elementele în ordine crescătoare.

Date de intrare[edit | edit source]

Programul va citi de la tastatură valoarea n, 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 crescătoare a elementelor. Î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 <= 1.000.000
  • valorile elementelor șirului vor fi cuprinse în intervalul [1, 3]

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 8 Introduceti 8 numere separate prin spatiu:1 2 3 1 2 3 1 2
Ieșire
Datele introduse sunt corecte!
Noul vector este: [1, 1, 1, 2, 2, 2, 3, 3]

Exemplul 2[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 123456789
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) <= 1000000:
           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 1 <= int(i) <= 3:
                   continue
               else:
                   print("Datele introduse sunt incorecte!")
                   exit()
           else:
               print("Datele introduse sunt incorecte!")
               exit()


def ordonare_crescator(sir):

   sir_ordonat = sorted(sir)
   print("Noul vector este:",sir_ordonat)


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_crescator(lst_int)



</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program este conceput pentru a ordona crescător un sir de numere introdus de utilizator. Programul conține mai multe funcții pentru a verifica și procesa datele introduse:

  1. is_integer(value) - Verifică dacă un șir de caractere conține doar cifre și returnează True în acest caz sau False în caz contrar.
  2. verificare_nr_elemente(n) - Verifică dacă numărul de elemente introdus este un număr întreg între 1 și 1.000.000. Dacă nu este, afișează un mesaj de eroare și închide programul.
  3. verificare_vector(n, vector) - Verifică dacă lungimea vectorului introdus este egală cu n și dacă toate elementele sunt numere întregi între 1 și 3. Dacă nu, afișează un mesaj de eroare și închide programul.
  4. ordonare_crescator(sir) - Primește un sir de numere întregi, le sortează în ordine crescătoare și afișează sirul ordonat.

În secțiunea __main__, programul solicită utilizatorului să introducă numărul de elemente și elementele sirului, apoi verifică datele introduse. Dacă datele sunt corecte, programul apelează funcția ordonare_crescator() pentru a sorta sirul în ordine crescătoare și afișează rezultatul.