0972 - Pozitii

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dă un șir de caractere. Să se determine câte vocale din șir sunt cuprinse între două consoane.

Date de intrare[edit | edit source]

Programul citește de la tastatură un sir de caractere.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa valoarea cerută. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".

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

șirul va avea cel mult 255 caractere
șirul nu va conține litere mari

Explicație[edit | edit source]

Vocalele care respectă regula sunt:

oasele sunt fragile

Exemplu 1[edit | edit source]

Intrare
oasele sunt fragile
Ieșire
Datele introduse corespund restricțiilor impuse.
4


Exemplu 2[edit | edit source]

Intrare
Ana aRe MERE
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 972 Pozitii

def validare(propozitie): # functia de verificare a datelor de intrare

   if len(propozitie) > 255:
       raise ValueError
   for caracter in propozitie:         # caracterul nu poate fi decat litera mica sau spatiu
       if (ord(caracter) < ord('a') or ord(caracter) > ord('z')) and caracter != ' ':
           raise ValueError
   print("Datele de intrare corespund restrictiilor impuse")
   return True


def vocala(litera): # functie de verificare daca litera e vocala

   vocale = "aeiou"
   if litera in vocale:
       return True
   else:
       return False


def pozitii(propozitie):

   numar = 0
   for iterator in range(1, len(propozitie)-1):    # parcurgem sirul
       if vocala(propozitie[iterator]) is True and vocala(propozitie[iterator-1]) is False and \
               vocala(propozitie[iterator+1]) is False and propozitie[iterator-1] != ' ' \
               and propozitie[iterator+1] != ' ':      # verificam daca litera e vocala si cele de langa is consoane
           numar += 1                              # daca da, le numaram
   print(numar)


if __name__ == '__main__':

   # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
   try:
       sir = input(f"Introduceti sirul ")      # citirea sirului
       validare(sir)                           # apelul functiei de verificare
       pozitii(sir)                            # apelul functiei de rezolvare
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       print("Datele de intrare nu corespund restrictiilor impuse")
       

</syntaxhighlight>