1510 – FCăutare

De la Universitas MediaWiki

Sursa: FCautare


Cerinţă

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

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

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

  • 1 <= n <= 100

Exemple

Exemplul 1

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

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

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

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)

Explicație rezolvare

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.