2594 - Partionare: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==Cerința== Se citește un număr natural n și un șir de n numere întregi. Să se aranjeze elementele astfel încât în prima parte a șirului să fie valorile pare în ordine crescătoare, iar în partea a doua valorile impare, de asemenea în ordine crescătoare. ==Date de intrare== Programul citește de la tastatură numărul n și apoi cele n elemente ale șirului. ==Date de ieșire== Programul afișează pe ecran elementele șirului după prelucrare cu spații intr... |
Adina Timiș (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 22: | Line 22: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#2594 - | #2594 - Partitionare | ||
def sort_pare_impare( | def sort_pare_impare(lista): | ||
pare = [] | pare = [] # creăm o listă goală, pentru numerele pare | ||
impare = [] | impare = [] # a doua listă goală, pentru numerele impare | ||
# adăugăm fiecare număr în lista corespunzătoare | |||
for num in lista: | for num in lista: | ||
if num % 2 == 0: | if num % 2 == 0: | ||
Line 34: | Line 35: | ||
impare.append(num) | impare.append(num) | ||
pare.sort() | pare.sort() # sortăm lista de numere pare | ||
impare.sort() | impare.sort() # la fel lista de numere impare | ||
rezultat = pare + impare | rezultat = pare + impare # concatenăm cele două liste sortate | ||
return rezultat | |||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n = int(input("Introduceți numărul de elemente: ")) | n = int(input("Introduceți numărul de elemente: ")) | ||
if n < 1 or n > 1000: | lista = [int(num) for num in input("Introduceți șirul de numere: ").split()] | ||
# verificăm restricțiile | |||
if n < 1 or n > 1000 or any(num < -2147483648 or num > 2147483647 for num in lista): | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
else: | else: | ||
print("Datele de intrare corespund restricțiilor impuse.") | print("Datele de intrare corespund restricțiilor impuse.") | ||
sorted_list = sort_pare_impare(lista) # apelăm funcția de sortare | |||
print(" ".join(str(num) for num in sorted_list)) # afișăm lista sortată | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:59, 23 April 2023
Cerința[edit | edit source]
Se citește un număr natural n și un șir de n numere întregi. Să se aranjeze elementele astfel încât în prima parte a șirului să fie valorile pare în ordine crescătoare, iar în partea a doua valorile impare, de asemenea în ordine crescătoare.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n și apoi cele n elemente ale șirului.
Date de ieșire[edit | edit source]
Programul afișează pe ecran elementele șirului după prelucrare cu spații intre ele.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 1000
- cele n numere pot fi reprezentate pe 32 de biți cu semn.
Exemplul 1[edit | edit source]
- Intrare
- 10
- 5 4 3 2 1 6 7 8 9 18
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 2 4 6 8 18 1 3 5 7 9
Exemplul 2[edit | edit source]
- Intrare
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2594 - Partitionare
def sort_pare_impare(lista):
pare = [] # creăm o listă goală, pentru numerele pare impare = [] # a doua listă goală, pentru numerele impare
# adăugăm fiecare număr în lista corespunzătoare for num in lista: if num % 2 == 0: pare.append(num) else: impare.append(num)
pare.sort() # sortăm lista de numere pare impare.sort() # la fel lista de numere impare
rezultat = pare + impare # concatenăm cele două liste sortate
return rezultat
if __name__ == "__main__":
n = int(input("Introduceți numărul de elemente: ")) lista = [int(num) for num in input("Introduceți șirul de numere: ").split()]
# verificăm restricțiile if n < 1 or n > 1000 or any(num < -2147483648 or num > 2147483647 for num in lista): print("Datele de intrare nu corespund restricțiilor impuse.") else: print("Datele de intrare corespund restricțiilor impuse.") sorted_list = sort_pare_impare(lista) # apelăm funcția de sortare print(" ".join(str(num) for num in sorted_list)) # afișăm lista sortată
</syntaxhighlight>