0157 - Doar Vocale: Difference between revisions

From Bitnami MediaWiki
No edit summary
Tag: visualeditor
 
Line 32: Line 32:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 0157 Doar Vocale
# 0157 Doar Vocale
def validare(nr_cuv, cuvinte):
def validare(nr_cuv, cuvinte):             # functia de validare a datelor de intrare


     if nr_cuv <= 0 or nr_cuv >= 1000:
     if nr_cuv <= 0 or nr_cuv >= 1000:
Line 41: Line 41:
     if len(cuvinte) != nr_cuv:
     if len(cuvinte) != nr_cuv:
         raise ValueError
         raise ValueError
    # daca datele de intrare nu corespund, ridicam eroarea ValueError


     for cuv in cuvinte:
     for cuv in cuvinte:
Line 46: Line 48:
             raise ValueError
             raise ValueError
         for litera in cuv:
         for litera in cuv:
             if litera < 'a' or litera > 'z':
             if litera < 'a' or litera > 'z':   # trebuie sa fie doar litera mica
                 raise ValueError
                 raise ValueError


Line 52: Line 54:




def vocala(litera):
def vocala(litera):             # functie care verifica daca litera este o vocala
     if litera in "aeiou":
     if litera in "aeiou":
         return True
         return True
Line 60: Line 62:


def doar_vocale(cuvinte):
def doar_vocale(cuvinte):
     nr_cuvinte_doar_vocale = 0
     nr_cuvinte_doar_vocale = 0           # variabila in care numaram cate cuvinte contin doar vocale


     for cuv in cuvinte:
     for cuv in cuvinte:
         are_consoane = False
         are_consoane = False   # presupunem ca fiecare cuvant nu are consoane
         for litera in cuv:
         for litera in cuv:
             if vocala(litera) is False:
             if vocala(litera) is False:
                 are_consoane = True
                 are_consoane = True         # daca vreo litera din cuvant nu e vocala atunci are consoane
                 break
                 break
         if are_consoane is False:
         if are_consoane is False:           # daca nu are consoane, numaram acel cuvant
             nr_cuvinte_doar_vocale += 1
             nr_cuvinte_doar_vocale += 1


     file_out.write(str(nr_cuvinte_doar_vocale))
     file_out.write(str(nr_cuvinte_doar_vocale))     # afisarea
 


if __name__ == '__main__':
if __name__ == '__main__':


     file_in = open("doarvocalein.txt", "r")
     file_in = open("doarvocalein.txt", "r")             # declararea fisierelor
     file_out = open("doarvocaleout.txt", "w")
     file_out = open("doarvocaleout.txt", "w")           # fisierul out trebuie declarat cu optiunea "w" (write)
    # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
     try:
     try:
         nr_cuvinte = int(file_in.readline())
         nr_cuvinte = int(file_in.readline())       # citim numarul de cuvinte
         lista_cuvinte = []
         lista_cuvinte = []                         # adaugam cuvintele intr-o lista


         for i in range(nr_cuvinte):
         for i in range(nr_cuvinte):
             cuvant = file_in.readline().strip()
             cuvant = file_in.readline().strip()
            # fiecare cuvant il "curatam" de \n sau spatii de la final ce pot aparea in fisier apoi il adaugam in lista
             lista_cuvinte.append(cuvant)
             lista_cuvinte.append(cuvant)


         validare(nr_cuvinte, lista_cuvinte)
         validare(nr_cuvinte, lista_cuvinte)         # apelul functiei de validare
         doar_vocale(lista_cuvinte)
         doar_vocale(lista_cuvinte)                 # apelul functiei de rezolvare


     except ValueError:
     except ValueError:
Line 92: Line 97:
     except IndexError:
     except IndexError:
         file_out.write("Datele de intrare nu corespund restrictiilor impuse")
         file_out.write("Datele de intrare nu corespund restrictiilor impuse")
       
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 13:24, 4 May 2023

Cerința[edit]

Se dă un șir de n cuvinte, fiecare format din cel mult 30 caractere. Să se determine numărul cuvintelor care conțin doar vocale.

Date de intrare[edit]

Fişierul de intrare doarvocalein.txt conţine pe prima linie numărul n, iar pe n următoarele n linii câte un cuvânt.

Date de ieșire[edit]

Dacă datele sunt introduse corect, fişierul de ieşire doarvocaleout.txt va conține pe prima linie : " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa numărul cuvintelor care conțin doar vocale. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"

Restricții și precizări[edit]

  • 0 < n ≤ 1000
  • cuvintele vor conține doar litere mici ale alfabetului englez
  • se consideră vocale caracterele din mulțimea {a,e,i,o,u}

Exemplu 1[edit]

doarvocalein.txt
5
creion
lemn
ou
ea
voce
doarvocaleout.txt
Datele introduse corespund restricțiilor impuse.
2


Explicație[edit]

Sunt 2 cuvinte formate doar din vocale: ou, ea.

Exemplu 2[edit]

doarvocalein.txt
1
Textul descriptiv literar este un text, în versuri sau în proză, în care se prezintă sugestiv un colț/aspect din natură, un obiect sau o persoană, prin intermediul figurilor de stil și a imaginilor artistice.
doarvocaleout.txt
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare[edit]

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

  1. 0157 Doar Vocale

def validare(nr_cuv, cuvinte): # functia de validare a datelor de intrare

   if nr_cuv <= 0 or nr_cuv >= 1000:
       raise ValueError
   if len(cuvinte) != nr_cuv:
       raise ValueError
   # daca datele de intrare nu corespund, ridicam eroarea ValueError
   for cuv in cuvinte:
       if len(cuv) > 30:
           raise ValueError
       for litera in cuv:
           if litera < 'a' or litera > 'z':    # trebuie sa fie doar litera mica
               raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse\n")


def vocala(litera): # functie care verifica daca litera este o vocala

   if litera in "aeiou":
       return True
   return False


def doar_vocale(cuvinte):

   nr_cuvinte_doar_vocale = 0           # variabila in care numaram cate cuvinte contin doar vocale
   for cuv in cuvinte:
       are_consoane = False    # presupunem ca fiecare cuvant nu are consoane
       for litera in cuv:
           if vocala(litera) is False:
               are_consoane = True         # daca vreo litera din cuvant nu e vocala atunci are consoane
               break
       if are_consoane is False:           # daca nu are consoane, numaram acel cuvant
           nr_cuvinte_doar_vocale += 1
   file_out.write(str(nr_cuvinte_doar_vocale))     # afisarea


if __name__ == '__main__':

   file_in = open("doarvocalein.txt", "r")             # declararea fisierelor
   file_out = open("doarvocaleout.txt", "w")           # fisierul out trebuie declarat cu optiunea "w" (write)
   # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
   try:
       nr_cuvinte = int(file_in.readline())        # citim numarul de cuvinte
       lista_cuvinte = []                          # adaugam cuvintele intr-o lista
       for i in range(nr_cuvinte):
           cuvant = file_in.readline().strip()
           # fiecare cuvant il "curatam" de \n sau spatii de la final ce pot aparea in fisier apoi il adaugam in lista
           lista_cuvinte.append(cuvant)
       validare(nr_cuvinte, lista_cuvinte)         # apelul functiei de validare
       doar_vocale(lista_cuvinte)                  # apelul functiei de rezolvare
   except ValueError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")
       

</syntaxhighlight>