1927 - Bitsort: Difference between revisions

From Bitnami MediaWiki
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):
    n = int(input())
     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.")
         exit()
         return False
    vector = list(map(int, input().split()))
     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.")
             exit()
             return False
     return vector
     return True




if __name__ == '__main__':
if __name__ == '__main__':
     vector = conform_restrictiilor()
    n = int(input())
    bitsort(vector)
     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>

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