0295 – Vecini

From Bitnami MediaWiki
Revision as of 18:36, 28 April 2023 by Tamas Claudia (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursă: [1]

Cerinţa[edit | edit source]

Se dă un şir cu n elemente, numere naturale. Să se verifice dacă există în şir elemente care să aibă ambii vecini de aceeaşi paritate cu el.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire[edit | edit source]

Dacă datele introduse sunt corecte, pe ecran se va afișa "Datele introduse sunt corecte.", apoi programul afișează mesajul DA, dacă există în şir elemente care să aibă ambii vecini de aceeaşi paritate cu el, respectiv NU în caz contrar. Dacă datele introduse nu sunt valide, se afișează mesajul: "Datele introduse nu sunt corecte.".

Restricții și precizări[edit | edit source]

  • 1 ⩽ n ⩽ 100
  • elementele şirului vor avea cel mult 9 cifre

Exemplu[edit | edit source]

Intrare
5
803 60 102 408 6
Ieșire
Datele introduse sunt corecte.
DA

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 0295

def validare_date(n, lista):

   if n < 1 or n > 100:
       print("Datele introduse nu sunt corecte.")
       exit()
   for elem in lista:
       if elem < 0 or elem > 999999999:
           print("Datele introduse nu sunt corecte.")
           exit()
   print("Datele introduse sunt corecte.")


def verificaVecinii(lista, pozitie):

   if (pozitie == 0 or lista[pozitie-1] % 2 == lista[pozitie] % 2) and (pozitie == len(lista)-1 or lista[pozitie+1] % 2 == lista[pozitie] % 2):
       return True
   else:
       return False


if __name__ == "__main__":

   n = int(input("Introduceți un numar: "))
   lista = list(map(int, input("Introduceți numerele din lista cu spatiu intre ele: ").split()))
   validare_date(n, lista)
   gasit = False
   for i in range(n):
       if verificaVecinii(lista, i):
           print("DA")
           gasit = True
           break
   if not gasit:
       print("NU")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Funcția validare_date(n, lista) validează datele introduse de utilizator. Ea primește ca parametri numărul de elemente din șir și lista de elemente, iar în cazul în care numărul de elemente nu se încadrează în intervalul [1, 100] sau cel puțin un element din listă depășește valoarea maximă permisă de 999999999, funcția afișează un mesaj de eroare și se termină executarea programului. În cazul în care toate datele sunt valide, se afișează mesajul Datele introduse sunt corecte..

Funcția verificaVecinii(lista, pozitie) primește ca parametri lista de numere și poziția elementului curent din listă și verifică dacă acesta are ambii vecini cu aceeași paritate cu el. Dacă da, returnează True, altfel returnează False.

În funcția principală __main__, se citește numărul de elemente din șir și lista de elemente de la tastatură folosind funcția input(). Lista de elemente este convertită într-o listă de întregi folosind funcția map() și metoda split() pentru a separa elementele citite prin spații. Apoi, funcția validare_date(n, lista) este apelată pentru a valida datele introduse.

În continuare, se parcurge lista cu ajutorul unui for și se verifică pentru fiecare element dacă are ambii vecini cu aceeași paritate cu el folosind funcția verificaVecinii(lista, i). Dacă se găsește un astfel de element, se afișează mesajul DA și se setează variabila gasit pe True. Dacă nu se găsește niciun element cu această proprietate, se afișează mesajul NU.