0914 - Half Sort 1: Difference between revisions
Pagină nouă: <nowiki>== Cerință ==</nowiki> Se dă un vector cu n elemente numere întregi, n fiind număr par. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate. Se vor defini și apela următoarele subprograme: * citire, care citește valoarea lui n și cele n elemente ale tabloului * afisare, care afișează elementele tabloului, separate prin exact un spațiu * sortare, care ordonează elemente... |
Vardai Erwin (talk | contribs) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
== Cerință == | |||
Se dă un vector cu '''n elemente numere întreg'''i, '''n fiind număr par'''. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate. | |||
Se dă un vector cu n elemente numere | |||
Se vor defini și apela următoarele subprograme: | Se vor defini și apela următoarele subprograme: | ||
'''citire''', care citește valoarea lui n și cele n elemente ale tabloului | |||
'''afisare''', care afișează elementele tabloului, separate prin exact un spațiu | |||
'''sortare''', care ordonează elementele vectorului cuprinse între doi indici transmiși ca parametru. | |||
== Date de intrare == | |||
Fişierul de intrare halfsort1.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 == | |||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Fişierul de ieşire halfsort1.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse." | |||
== Restricții de precizări == | |||
*1 ⩽ '''n''' ⩽ 1000 | |||
*valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 1.000.000.00 | |||
< | == Exemplul 1== | ||
; Intrare | |||
: 6 | |||
: 8 2 9 4 5 7 | |||
; Ieșire | |||
: Datele introduse corespund restricțiilor impuse. | |||
: 2 8 9 7 5 4 | |||
== Exemplul 2== | |||
; Intrare | |||
: 6 | |||
: 2 4 3 9 5 8 | |||
; Ieșire | |||
: Datele introduse corespund restricțiilor impuse. | |||
: 2 3 4 9 8 5 | |||
== Rezolvare ver. 1 == | |||
<syntaxhighlight lang="python" line="1" start="1"> | |||
def validare(n, a): | |||
# Verifică dacă n este de tip int, este mai mare decât 1, mai mic sau egal cu 100 și toate elementele din a sunt de tip int | |||
return isinstance(n, int) and n > 1 and n <= 100 and all(isinstance(x, int) for x in a) | |||
def sortare(n, a, st, dr, ch): | |||
if ch == 'c': | |||
# Sortare crescătoare (crescent) | |||
for i in range(st, dr): | |||
for j in range(i + 1, dr): | |||
if a[i] > a[j]: | |||
a[i], a[j] = a[j], a[i] | |||
else: | |||
# Sortare descrescătoare (descendent) | |||
for i in range(st, dr): | |||
for j in range(i + 1, dr): | |||
if a[i] < a[j]: | |||
a[i], a[j] = a[j], a[i] | |||
def afisare(n, a): | |||
# Afișează elementele listei a | |||
for i in range(n): | |||
print(a[i], end=' ') | |||
if __name__ == "__main__": | |||
n = 0 | |||
a = [] | |||
# Citire date de intrare | |||
n = int(input("Introduceți numărul de elemente: ")) | |||
for i in range(n): | |||
a.append(int(input(f"Introduceți elementul {i + 1}: "))) | |||
# Verificare validitate date de intrare | |||
if validare(n, a): | |||
print("Datele introduse corespund restricțiilor impuse.") | |||
# Sortare | |||
sortare(n, a, 0, n // 2 + n % 2, 'c') | |||
sortare(n, a, n // 2 + n % 2, n, 'd') | |||
# Afisare rezultat | |||
print("Lista sortată:") | |||
afisare(n, a) | |||
else: | |||
print("Datele introduse nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> |
Latest revision as of 11:46, 30 April 2023
Cerință[edit | edit source]
Se dă un vector cu n elemente numere întregi, n fiind număr par. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.
Se vor defini și apela următoarele subprograme:
citire, care citește valoarea lui n și cele n elemente ale tabloului
afisare, care afișează elementele tabloului, separate prin exact un spațiu
sortare, care ordonează elementele vectorului cuprinse între doi indici transmiși ca parametru.
Date de intrare[edit | edit source]
Fişierul de intrare halfsort1.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[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Fişierul de ieşire halfsort1.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții de precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000
- valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 1.000.000.00
Exemplul 1[edit | edit source]
- Intrare
- 6
- 8 2 9 4 5 7
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2 8 9 7 5 4
Exemplul 2[edit | edit source]
- Intrare
- 6
- 2 4 3 9 5 8
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2 3 4 9 8 5
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(n, a):
# Verifică dacă n este de tip int, este mai mare decât 1, mai mic sau egal cu 100 și toate elementele din a sunt de tip int return isinstance(n, int) and n > 1 and n <= 100 and all(isinstance(x, int) for x in a)
def sortare(n, a, st, dr, ch):
if ch == 'c': # Sortare crescătoare (crescent) for i in range(st, dr): for j in range(i + 1, dr): if a[i] > a[j]: a[i], a[j] = a[j], a[i] else: # Sortare descrescătoare (descendent) for i in range(st, dr): for j in range(i + 1, dr): if a[i] < a[j]: a[i], a[j] = a[j], a[i]
def afisare(n, a):
# Afișează elementele listei a for i in range(n): print(a[i], end=' ')
if __name__ == "__main__":
n = 0 a = [] # Citire date de intrare n = int(input("Introduceți numărul de elemente: ")) for i in range(n): a.append(int(input(f"Introduceți elementul {i + 1}: "))) # Verificare validitate date de intrare if validare(n, a): print("Datele introduse corespund restricțiilor impuse.") # Sortare sortare(n, a, 0, n // 2 + n % 2, 'c') sortare(n, a, n // 2 + n % 2, n, 'd') # Afisare rezultat print("Lista sortată:") afisare(n, a) else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>