1510 – FCăutare

From Bitnami MediaWiki

Sursa: FCautare


Cerinţă[edit | edit source]

Se dă un șir cu n elemente întregi și un număr v. Să se returneze poziția din șir unde găsim elementul v. Dacă există mai multe poziții se va afișa doar una dintre ele, dacă nu există se va afișa -1.

Date de intrare[edit | edit source]

Programul va citi de la tastatură o valoaren, apoi n numere întregi în ordine crescătoare reprezentând elementele șirului, și valoarea v

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se va afișa poziția în care găsim valoarea v, sau -1 dacă valoarea respectivă nu se găsește deloc în vector. În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!".

Restricţii şi precizări[edit | edit source]

  • 1 <= n <= 100

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 5
Introduceti 5 numere separate prin spatiu:12 12 3 4 2
Introduceti valoarea pe care doriti sa o cautati:12
Ieșire
Datele introduse sunt corecte!
Pozitia este: 1

Exemplul 2[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 3
Introduceti 3 numere separate prin spatiu:12321 12 3
Introduceti valoarea pe care doriti sa o cautati:2
Ieșire
Datele introduse sunt corecte!
-1

Exemplul 3[edit | edit source]

Intrare
Introduceti numarul de elemente a sirului: 4
Introduceti 4 numere separate prin spatiu:13 11 2 1 1
Ieșire
Datele introduse sunt incorecte!

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def is_integer(value):

   return value.isdigit()


def verificare_nr_elemente(n):

   if is_integer(n):
       if 0 < int(n) <= 100:
           return n
       else:
           print("Datele introduse sunt incorecte!")
           exit()
   else:
       print("Datele introduse sunt incorecte!")
       exit()


def verificare_v(v):

   if is_integer(v):
       return v
   else:
       print("Datele introduse sunt incorecte!")
       exit()


def verificare_vector(n, vector):

   if len(vector) != int(n):
       print("Datele introduse sunt incorecte!")
       exit()
   else:
       for i in vector:
           if is_integer(i):
               continue
           else:
               print("Datele introduse sunt incorecte!")
               exit()


def afisare_pozitie(v, vector):

   for i in range(0, int(n)):
       if vector[i] == int(v):
           print("Pozitia este:", i+1)
           exit()
   print("-1")


if __name__ == '__main__':

   n = input("Introduceti numarul de elemente a sirului: ")
   verificare_nr_elemente(n)
   elem = input(f"Introduceti {n} numere separate prin spatiu:").split()
   verificare_vector(n, elem)
   lst_int = list(map(int, elem))
   v = input("Introduceti valoarea pe care doriti sa o cautati:")
   verificare_v(v)
   print("Datele introduse sunt corecte!")
   afisare_pozitie(v, lst_int)



</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program primește ca intrare un număr întreg n reprezentând numărul de elemente dintr-un vector și vectorul însuși, format din n numere întregi. Programul mai primește o valoare v și afișează poziția primei apariții a valorii v în vector sau -1 dacă v nu se găsește în vector.

Funcția is_integer(value) este o funcție simplă care primește o valoare și returnează adevărat dacă valoarea este un număr întreg sau fals în caz contrar.

Funcția verificare_nr_elemente(n) verifică dacă n este un număr întreg valid și dacă este între 1 și 100. Dacă n nu este valid sau nu este în intervalul specificat, programul afișează "Datele introduse sunt incorecte!" și se termină prin apelul funcției exit().

Funcția verificare_v(v) verifică dacă v este un număr întreg valid. Dacă v nu este valid, programul afișează "Datele introduse sunt incorecte!" și se termină prin apelul funcției exit().

Funcția verificare_vector(n, vector) verifică dacă vectorul are lungimea corectă și dacă toate elementele sale sunt numere întregi valide. Dacă vectorul nu are lungimea corectă sau conține elemente invalide, programul afișează "Datele introduse sunt incorecte!" și se termină prin apelul funcției exit().

Funcția afisare_pozitie(v, vector) parcurge vectorul și returnează poziția primei apariții a valorii v în vector sau -1 dacă v nu se găsește în vector.

În funcția principală, programul primește input-ul de la utilizator pentru n, elem și v și apoi verifică validitatea acestor intrări utilizând funcțiile verificare_nr_elemente(n), verificare_vector(n, elem) și verificare_v(v). Dacă toate intrările sunt valide, programul afișează "Datele introduse sunt corecte!" și apoi se continuă cu apelul funcției afisare_pozitie(v, lst_int) pentru a găsi poziția primei apariții a valorii v în vector.