0972 - Pozitii: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == 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". == Re...
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 11: Line 11:
Vocalele care respectă regula sunt:
Vocalele care respectă regula sunt:


oas''' e '''le s''' u '''nt f''' a '''rg''' i '''le
oas'''e'''le s'''u'''nt fr'''a'''g'''i'''le
 
== Exemplu 1 ==
== Exemplu 1 ==
; Intrare
; Intrare
Line 26: Line 27:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 972 Pozitii
# 972 Pozitii
def validare(propozitie):
def validare(propozitie):               # functia de verificare a datelor de intrare
     if len(propozitie) > 255:
     if len(propozitie) > 255:
         raise ValueError
         raise ValueError


     for caracter in propozitie:
     for caracter in propozitie:         # caracterul nu poate fi decat litera mica sau spatiu
         if ord(caracter) < ord('a') and caracter != ' ':
         if (ord(caracter) < ord('a') or ord(caracter) > ord('z')) and caracter != ' ':
             raise ValueError
             raise ValueError


Line 40: Line 41:




def vocala(litera):
def vocala(litera):             # functie de verificare daca litera e vocala
     vocale = "aeiou"
     vocale = "aeiou"
     if litera in vocale:
     if litera in vocale:
Line 50: Line 51:
def pozitii(propozitie):
def pozitii(propozitie):
     numar = 0
     numar = 0
     for iterator in range(1, len(propozitie)-1):
     for iterator in range(1, len(propozitie)-1):   # parcurgem sirul
         if vocala(propozitie[iterator]) is True and vocala(propozitie[iterator-1]) is False and \
         if vocala(propozitie[iterator]) is True and vocala(propozitie[iterator-1]) is False and \
                 vocala(propozitie[iterator+1]) is False and propozitie[iterator-1] != ' ' \
                 vocala(propozitie[iterator+1]) is False and propozitie[iterator-1] != ' ' \
                 and propozitie[iterator+1] != ' ':
                 and propozitie[iterator+1] != ' ':     # verificam daca litera e vocala si cele de langa is consoane
             numar += 1
             numar += 1                             # daca da, le numaram


     print(numar)
     print(numar)




if _name_ == '_main_':
if __name__ == '__main__':
 
    # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam


     try:
     try:
         sir = input(f"Introduceti sirul ")
         sir = input(f"Introduceti sirul ")     # citirea sirului
         validare(sir)
         validare(sir)                           # apelul functiei de verificare
         pozitii(sir)
         pozitii(sir)                           # apelul functiei de rezolvare


     except ValueError:
     except ValueError:
Line 70: Line 73:
     except IndexError:
     except IndexError:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
       
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 17:34, 2 May 2023

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>