1927 - Bitsort: Difference between revisions
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/1927/bitsort - Bitsort] ---- == Cerinţa == Se dă un vector cu '''n''' elemente, numere naturale nenule. Afișați termenii în ordine crescătoare. '''Termenii care apar de mai multe ori se vor afișa o singură dată.''' == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi ''n''' numere naturale nenule, separate prin spații. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran se va afi... |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 50: | Line 50: | ||
def conform_restrictiilor(): | def conform_restrictiilor(n, vector): | ||
if n < 1 or n > 1000000: | if n < 1 or n > 1000000: | ||
print("Datele nu sunt comform restricțiilor impuse.") | print("Datele nu sunt comform restricțiilor impuse.") | ||
return False | |||
for x in vector: | for x in vector: | ||
if x > 300000 or x < 1: | if x > 300000 or x < 1: | ||
print("Datele nu sunt comform restricțiilor impuse.") | print("Datele nu sunt comform restricțiilor impuse.") | ||
return False | |||
return | return True | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
vector = conform_restrictiilor() | n = int(input()) | ||
vector = list(map(int, input().split())) | |||
if conform_restrictiilor(n, vector) is True: | |||
print("Datele sunt corecte.") | |||
bitsort(vector) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicaţie cod== | |||
Funcția '''bitsort''' primește ca parametru un '''vector''' și sortează elementele sale. Apoi, pentru a elimina elementele duplicate, compară fiecare element cu elementul următor și îl afișează dacă este diferit de acesta. La final, verifică și ultimul element din '''vector'''. | |||
Funcția '''conform_restrictiilor''' primește ca parametri un număr întreg '''n''' și un '''vector''' de numere întregi '''vector'''. Verifică dacă '''n''' respectă restricțiile impuse, respectiv dacă este între 1 și 1.000.000, iar fiecare element al vectorului este între 1 și 300.000. Dacă datele de intrare respectă aceste restricții, funcția returnează True, altfel returnează False. | |||
În funcția '''main''', se citește numărul '''n''' și vectorul de la intrare și se apelează funcția '''conform_restrictiilor''' pentru a verifica restricțiile. Dacă acestea sunt respectate, se afișează mesajul '''Datele sunt corecte.''' și se apelează funcția '''bitsort''' pentru a sorta și afișa elementele unice din '''vector'''. |
Latest revision as of 14:04, 30 April 2023
Sursa: - Bitsort
Cerinţa[edit | edit source]
Se dă un vector cu n elemente, numere naturale nenule. Afișați termenii în ordine crescătoare.
Termenii care apar de mai multe ori se vor afișa o singură dată.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n', iar apoi n numere naturale nenule, separate prin spații.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi se afișează elementele vectorului, în ordine crescătoare, separate prin spații, respectând cerința cerută. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 1.000.000
- cele n numere citite vor fi mai mici decât 300.000
Exemple[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- 7
- 9 8 8 8 1 2 8
- Ieșire
- Datele sunt corecte.
- 1 2 8 9
Exemplul 2[edit | edit source]
- Intrare
- 4
- 1000001 214141251521 20 20
- Ieșire
- Datele nu corespund restricțiilor impuse.
Exemplul 3[edit | edit source]
- Intrare
- 5
- 11 11 20 31 31 39
- Ieșire
- Datele sunt corecte.
- 11 20 31 39
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 1927 Bitsort
def bitsort(vector):
vector.sort() for i in range(len(vector) - 1): if vector[i] != vector[i + 1]: print(vector[i], end=" ") if vector[len(vector) - 1] != vector[len(vector) - 2]: print(vector[len(vector) - 1])
def conform_restrictiilor(n, vector):
if n < 1 or n > 1000000: print("Datele nu sunt comform restricțiilor impuse.") return False for x in vector: if x > 300000 or x < 1: print("Datele nu sunt comform restricțiilor impuse.") return False return True
if __name__ == '__main__':
n = int(input()) vector = list(map(int, input().split())) if conform_restrictiilor(n, vector) is True: print("Datele sunt corecte.") bitsort(vector)
</syntaxhighlight>
Explicaţie cod[edit | edit source]
Funcția bitsort primește ca parametru un vector și sortează elementele sale. Apoi, pentru a elimina elementele duplicate, compară fiecare element cu elementul următor și îl afișează dacă este diferit de acesta. La final, verifică și ultimul element din vector.
Funcția conform_restrictiilor primește ca parametri un număr întreg n și un vector de numere întregi vector. Verifică dacă n respectă restricțiile impuse, respectiv dacă este între 1 și 1.000.000, iar fiecare element al vectorului este între 1 și 300.000. Dacă datele de intrare respectă aceste restricții, funcția returnează True, altfel returnează False.
În funcția main, se citește numărul n și vectorul de la intrare și se apelează funcția conform_restrictiilor pentru a verifica restricțiile. Dacă acestea sunt respectate, se afișează mesajul Datele sunt corecte. și se apelează funcția bitsort pentru a sorta și afișa elementele unice din vector.