1665 - Pozitie Sir: Difference between revisions
Sinn Erich (talk | contribs) |
Sinn Erich (talk | contribs) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
Programul va afișa pe ecran poziţia determinată mai sus. Dacă numărul '''x''' nu se regăseşte în şir, valoarea afişată va fi '''-1'''. | Programul va afișa pe ecran poziţia determinată mai sus. Dacă numărul '''x''' nu se regăseşte în şir, valoarea afişată va fi '''-1'''. | ||
Dacă datele sunt introduse corect, | Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează poziţia pe care se va găsi numărul x în şirul a, dacă acesta ar fi ordonat descrescător. | ||
În | În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse." | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
Line 19: | Line 19: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; | ; Datele de intrare | ||
: Nr n si x sunt: | |||
: 9 13 | : 9 13 | ||
: Elementele sirului a sunt: | |||
: 26 2 5 30 13 45 62 7 79 | : 26 2 5 30 13 45 62 7 79 | ||
; | ; Datele de ieșire | ||
: Datele sunt introduse corect. | |||
: 6 | : 6 | ||
<br> | <br> | ||
Line 28: | Line 31: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | #1665 | ||
def | def cautare_pozitie(a, x): | ||
# sortăm lista în ordine descrescătoare | |||
a.sort(reverse=True) | |||
# căutăm poziția lui x | |||
if x in a: | |||
pos = a.index(x) + 1 | |||
return pos | |||
else: | |||
return -1 | |||
def | def validare_input(n, a): | ||
if | # verificăm restricțiile pentru n | ||
if n >= 200000: | |||
return False | return False | ||
# verificăm restricțiile pentru elementele din a | |||
for elem in a: | |||
if elem >= 10**9: | |||
return False | |||
return True | return True | ||
if __name__ == '__main__': | |||
# citim n și x | |||
n, x = map(int, input("Nr n si x sunt:").split()) | |||
# citim elementele șirului a | |||
a = list(map(int, input("Elementele sirului a sunt:").split())) | |||
if not validare_input(n, a): | |||
print("Datele nu corespund restricțiilor impuse.") | |||
if not | |||
print("Datele | |||
else: | else: | ||
# apelam functia cautare_pozitie pentru a gasi pozitia lui x in sirul a | |||
pozitie = cautare_pozitie(a, x) | |||
print("Datele introduse | print("Datele sunt introduse corect.") | ||
print( | print(pozitie) | ||
</syntaxhighlight> | |||
'''Explicatie cod:''' | |||
Acest cod definește două funcții: | |||
cautare_pozitie(a, x): această funcție primește o listă de numere a și un număr x, sortează lista în ordine descrescătoare, iar apoi caută poziția lui x în listă folosind metoda index(). Dacă x este găsit în listă, funcția returnează poziția sa în listă. Dacă nu este găsit, funcția returnează -1. | |||
validare_input(n, a): această funcție primește un număr întreg n și o listă de numere a și verifică dacă acestea respectă restricțiile impuse în enunțul problemei: n trebuie să fie mai mic decât 200000, iar elementele din a trebuie să fie mai mici decât 10^9. Dacă datele introduse nu respectă aceste restricții, funcția returnează False. În caz contrar, funcția returnează True. | |||
Funcția validare_input(n, a) este apelată în blocul if __name__ == '__main__': pentru a verifica dacă datele introduse de utilizator respectă restricțiile impuse. Dacă datele introduse nu sunt valide, se afișează un mesaj de eroare. În caz contrar, se apelează funcția cautare_pozitie(a, x) pentru a găsi poziția lui x în lista a, iar apoi se afișează rezultatul. |
Latest revision as of 07:02, 27 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Considerăm şirul a cu n numere naturale nenule distincte două câte două şi un număr x. Scrieţi un program care determină poziţia pe care se va găsi numărul x în şirul a, dacă acesta ar fi ordonat descrescător.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n şi x, urmate de n numere naturale reprezentând elementele şirului a.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran poziţia determinată mai sus. Dacă numărul x nu se regăseşte în şir, valoarea afişată va fi -1.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează poziţia pe care se va găsi numărul x în şirul a, dacă acesta ar fi ordonat descrescător.
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."
Restricţii şi precizări[edit | edit source]
1 ≤ n < 200.000 cele n numere citite vor fi mai mici decât 109 considerăm elementele şirului a numerotate de la 1 la n
Exemplul 1[edit | edit source]
- Datele de intrare
- Nr n si x sunt:
- 9 13
- Elementele sirului a sunt:
- 26 2 5 30 13 45 62 7 79
- Datele de ieșire
- Datele sunt introduse corect.
- 6
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 1665
def cautare_pozitie(a, x):
# sortăm lista în ordine descrescătoare a.sort(reverse=True)
# căutăm poziția lui x if x in a: pos = a.index(x) + 1 return pos else: return -1
def validare_input(n, a):
# verificăm restricțiile pentru n if n >= 200000: return False # verificăm restricțiile pentru elementele din a for elem in a: if elem >= 10**9: return False return True
if __name__ == '__main__':
# citim n și x n, x = map(int, input("Nr n si x sunt:").split())
# citim elementele șirului a a = list(map(int, input("Elementele sirului a sunt:").split()))
if not validare_input(n, a): print("Datele nu corespund restricțiilor impuse.") else: # apelam functia cautare_pozitie pentru a gasi pozitia lui x in sirul a pozitie = cautare_pozitie(a, x) print("Datele sunt introduse corect.") print(pozitie)
</syntaxhighlight>
Explicatie cod:
Acest cod definește două funcții:
cautare_pozitie(a, x): această funcție primește o listă de numere a și un număr x, sortează lista în ordine descrescătoare, iar apoi caută poziția lui x în listă folosind metoda index(). Dacă x este găsit în listă, funcția returnează poziția sa în listă. Dacă nu este găsit, funcția returnează -1.
validare_input(n, a): această funcție primește un număr întreg n și o listă de numere a și verifică dacă acestea respectă restricțiile impuse în enunțul problemei: n trebuie să fie mai mic decât 200000, iar elementele din a trebuie să fie mai mici decât 10^9. Dacă datele introduse nu respectă aceste restricții, funcția returnează False. În caz contrar, funcția returnează True.
Funcția validare_input(n, a) este apelată în blocul if __name__ == '__main__': pentru a verifica dacă datele introduse de utilizator respectă restricțiile impuse. Dacă datele introduse nu sunt valide, se afișează un mesaj de eroare. În caz contrar, se apelează funcția cautare_pozitie(a, x) pentru a găsi poziția lui x în lista a, iar apoi se afișează rezultatul.