2083 – Ordon123
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:
is_integer(value)
- Verifică dacă un șir de caractere conține doar cifre și returneazăTrue
în acest caz sauFalse
în caz contrar.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.verificare_vector(n, vector)
- Verifică dacă lungimea vectorului introdus este egală cun
și dacă toate elementele sunt numere întregi între 1 și 3. Dacă nu, afișează un mesaj de eroare și închide programul.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.