0131 - Sort Cif 2: Difference between revisions
Pagină nouă: Se dă un vector cu '''n''' elemente numere întregi. == Cerinţa == Să se ordoneze crescător elementele unui vector crescător după prima cifră. == Date de intrare == Fişierul de intrare '''sortcif2.in''' conţine pe prima linie numărul '''n''' si pe a doua linie '''n''' numere întregi separate prin spaţii. == Date de ieşire == Fişierul de ieşire '''sortcif2.out''' va conţine pe prima linie cele '''n''' elemente ale vectorului, ordonate conform cerinței, separat... |
No edit summary |
||
Line 3: | Line 3: | ||
Să se ordoneze crescător elementele unui vector crescător după prima cifră. | Să se ordoneze crescător elementele unui vector crescător după prima cifră. | ||
== Date de intrare == | == Date de intrare == | ||
Fişierul de intrare ''' | Fişierul de intrare '''sortcif2in.txt''' conţine pe prima linie numărul '''n''' si pe a doua linie '''n''' numere întregi separate prin spaţii. | ||
== Date de ieşire == | == Date de ieşire == | ||
Fişierul de ieşire ''' | Fişierul de ieşire '''sortcif2out.txt''' va conţine pe prima linie cele '''n''' elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
* 0 < n ⩽ 100 | * 0 < n ⩽ 100 | ||
* valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât '''2 <sup> 30 </sup>''' | * valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât '''2 <sup> 30 </sup>''' | ||
== | == Exemplul 1 == | ||
; | ; sortcif2in.txt | ||
6 | |||
89 2246 91 4005 51 721 | |||
; | ; sortcif2out.txt | ||
Datele de intrare corespund restrictiilor impuse | |||
2246 4005 51 721 89 91 | |||
== Exemplul 2 == | |||
; sortcif2in.txt | |||
-1 | |||
101 | |||
; sortcif2out.txt | |||
Datele de intrare nu corespund restrictiilor impuse | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | # Funcția de validare verifică dacă datele de intrare sunt în intervalul specificat | ||
def validare(validare_cif, numere_validare): | |||
# Verificăm dacă n este în intervalul 0-100 | |||
if validare_cif <= 0 or validare_cif > 100: | |||
raise ValueError # Ridicăm o eroare dacă n nu este în intervalul 0-100 | |||
for numar in numere_validare: # Parcurgem lista de numere | |||
# Verificăm dacă valoarea absolută a numărului este mai mică decât 2^30 | |||
if abs(numar) >= 2**30: | |||
raise ValueError | |||
file_out.write("Datele de intrare corespund restrictiilor impuse\n") | |||
# Funcția sort_numbers sortează numerele în funcție de prima cifră | |||
def sort_numbers(numere): | |||
# Sortăm numerele în funcție de prima cifră | # Sortăm numerele în funcție de prima cifră | ||
numere.sort(key=lambda x: int(str(abs(x))[0])) | |||
return numere | |||
if __name__ == '__main__': | |||
file_in = open("sortcif2in.txt", "r") | |||
file_out = open("sortcif2out.txt", "w") | |||
try: | |||
# Citim numărul de numere | |||
n_main = int(file_in.readline()) | |||
# Citim numerele | |||
numere_main = list(map(int, file_in.readline().split())) | |||
# Validăm datele de intrare | |||
validare(n_main, numere_main) | |||
# Sortăm numerele în funcție de prima cifră | |||
numere_sortate = sort_numbers(numere_main) | |||
# Scriem numerele sortate în fișierul de ieșire | |||
file_out.write(' '.join(map(str, numere_sortate)) + '\n') | |||
# Dacă datele de intrare nu sunt valide, afișăm un mesaj de eroare | |||
except ValueError: | |||
file_out.write("Datele de intrare nu corespund restrictiilor impuse") | |||
# Dacă datele de intrare sunt incomplete, afișăm un mesaj de eroare | |||
except IndexError: | |||
file_out.write("Datele de intrare nu corespund restrictiilor impuse") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 15:16, 27 November 2023
Se dă un vector cu n elemente numere întregi.
Cerinţa[edit | edit source]
Să se ordoneze crescător elementele unui vector crescător după prima cifră.
Date de intrare[edit | edit source]
Fişierul de intrare sortcif2in.txt conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.
Date de ieşire[edit | edit source]
Fişierul de ieşire sortcif2out.txt va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.
Restricții și precizări[edit | edit source]
- 0 < n ⩽ 100
- valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 2 30
Exemplul 1[edit | edit source]
- sortcif2in.txt
6 89 2246 91 4005 51 721
- sortcif2out.txt
Datele de intrare corespund restrictiilor impuse 2246 4005 51 721 89 91
Exemplul 2[edit | edit source]
- sortcif2in.txt
-1 101
- sortcif2out.txt
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- Funcția de validare verifică dacă datele de intrare sunt în intervalul specificat
def validare(validare_cif, numere_validare):
# Verificăm dacă n este în intervalul 0-100 if validare_cif <= 0 or validare_cif > 100: raise ValueError # Ridicăm o eroare dacă n nu este în intervalul 0-100 for numar in numere_validare: # Parcurgem lista de numere # Verificăm dacă valoarea absolută a numărului este mai mică decât 2^30 if abs(numar) >= 2**30: raise ValueError file_out.write("Datele de intrare corespund restrictiilor impuse\n")
- Funcția sort_numbers sortează numerele în funcție de prima cifră
def sort_numbers(numere):
# Sortăm numerele în funcție de prima cifră numere.sort(key=lambda x: int(str(abs(x))[0])) return numere
if __name__ == '__main__':
file_in = open("sortcif2in.txt", "r") file_out = open("sortcif2out.txt", "w")
try: # Citim numărul de numere n_main = int(file_in.readline()) # Citim numerele numere_main = list(map(int, file_in.readline().split())) # Validăm datele de intrare validare(n_main, numere_main) # Sortăm numerele în funcție de prima cifră numere_sortate = sort_numbers(numere_main) # Scriem numerele sortate în fișierul de ieșire file_out.write(' '.join(map(str, numere_sortate)) + '\n')
# Dacă datele de intrare nu sunt valide, afișăm un mesaj de eroare except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse") # Dacă datele de intrare sunt incomplete, afișăm un mesaj de eroare except IndexError: file_out.write("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>