1665 - Pozitie Sir: Difference between revisions

From Bitnami MediaWiki
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, programul va rula.
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 cazul în care datele nu respectă restricțiile, se va afișa pe ecran: ''' "Datele nu corespund restricțiilor impuse.".'''
Î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 ==
; Intrare
; 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
; Ieșire
; 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>
#4273
#1665
def patrate_perfecte(n):
def cautare_pozitie(a, x):
     patrate = []
     # sortăm lista în ordine descrescătoare
    i = 1
     a.sort(reverse=True)
     while len(patrate) < n:
        patrat = i * i
        patrate.append(patrat)
        i += 1
    return patrate
 
 
def calculeaza(numbers):
    product = 1
    for number in numbers:
        product *= number
    return product


    # căutăm poziția lui x
    if x in a:
        pos = a.index(x) + 1
        return pos
    else:
        return -1


def validare_numar(n):
def validare_input(n, a):
     if n < 1 or n > 10:
    # 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 __name__ == '__main__':
     if not validare_input(n, a):
    n = int(input("Introduceți numărul n: "))
         print("Datele nu corespund restricțiilor impuse.")
     if not validare_numar(n):
         print("Datele introduse nu corespund cerintelor.")
     else:
     else:
         squares = patrate_perfecte(n)
         # apelam functia cautare_pozitie pentru a gasi pozitia lui x in sirul a
         product = calculeaza(squares)
         pozitie = cautare_pozitie(a, x)
         print("Datele introduse corespund cerintelor.")
         print("Datele sunt introduse corect.")
         print(product)
         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.


</syntaxhighlight>
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>

  1. 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.