0972 - Pozitii

From Bitnami MediaWiki
Revision as of 17:34, 2 May 2023 by Hotico Iulia Denisa (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

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

Date de intrare

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

Date de ieșire

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

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

Explicație

Vocalele care respectă regula sunt:

oasele sunt fragile

Exemplu 1

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


Exemplu 2

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


Rezolvare

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