0914 - Half Sort 1: Difference between revisions
No edit summary |
Vardai Erwin (talk | contribs) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
== Cerință == | == Cerință == | ||
Se dă un vector cu n elemente numere | 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 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 == | == 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. | 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 == | == Date de ieșire == | ||
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. | 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 == | == Restricții de precizări == | ||
*1 ⩽ n ⩽ 1000 | *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 | *valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 1.000.000.00 | ||
Line 20: | Line 25: | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: 2 8 9 7 5 4 | : 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 == | == 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>