0090 - Numar Maxim Vocale: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
Line 29: Line 29:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 0090 Numar Maxim Vocale
# 0090 Numar Maxim Vocale
def validare(nr_prop, propozitii):
def validare(nr_prop, propozitii):     # functia de validare a datelor de intrare


     if nr_prop <= 0 or nr_prop >= 100:
     if nr_prop <= 0 or nr_prop >= 100:
         raise ValueError
         raise ValueError
 
    # daca dsatele de intrare nu corespund, ridicam eroarea ValueError
     if len(propozitii) != nr_prop:
     if len(propozitii) != nr_prop:
         raise ValueError
         raise ValueError


     for prop in propozitii:
     for prop in propozitii:     # verificam toate propozitiile sa aiba caractere doar litere mici si spatii
         if len(prop) > 255:
         if len(prop) > 255:
             raise ValueError
             raise ValueError
         for litera in prop:
         for litera in prop:
             if (litera < 'a' or litera > 'z') and litera != ' ':
             if (litera < 'a' or litera > 'z') and litera != ' ':
                print("" + litera + "")
                 raise ValueError
                 raise ValueError


Line 50: Line 49:




def vocala(litera):
def vocala(litera):             # functie care verifica daca o litera e vocala
     if litera in "aeiou":
     if litera in "aeiou":
         return True
         return True
Line 57: Line 56:




def vocmax(propozitii):
def vocmax(propozitii):         # functia de rezolvare


     nr_maxim_vocale = 0
     nr_maxim_vocale = 0         # variabila in care salvam numarul maxim de vocale
     propozitia_dorita = ""
     propozitia_dorita = ""     # variabila in care salvam propozitia cu cele mai multe vocale


     for prop in propozitii:
     for prop in propozitii:     # parcurgem fiecare propozitie
         nr_vocale = 0
         nr_vocale = 0
         for caracter in prop:
         for caracter in prop:
             if vocala(caracter):
             if vocala(caracter):
                 nr_vocale += 1
                 nr_vocale += 1     # numaram cate vocale sunt in ea
         if nr_vocale > nr_maxim_vocale:
         if nr_vocale > nr_maxim_vocale:     # daca e mai mult de cat era maximul, updatam maximul si propozitia dorita
             nr_maxim_vocale = nr_vocale
             nr_maxim_vocale = nr_vocale
             propozitia_dorita = prop
             propozitia_dorita = prop


     if len(propozitia_dorita) > 0:
     if len(propozitia_dorita) > 0:     # daca am gasit o propozitie cu vocale o afisam
         file_out.write(propozitia_dorita)
         file_out.write(propozitia_dorita)
     else:
     else:
         file_out.write(propozitii[0])
         file_out.write(propozitii[0])       # daca nu, afisam prima propozitie




if __name__ == '__main__':
if __name__ == '__main__':
     file_in = open("vocmaxin.txt", "r")
     file_in = open("vocmaxin.txt", "r")         # declararea fisierelor
     file_out = open("vocmaxout.txt", "w")
     file_out = open("vocmaxout.txt", "w")      # declararea fisierelor out trebuie 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_propozitii = int(file_in.readline())
         nr_propozitii = int(file_in.readline())     # citim numarul de propozitii
         lista_propozitii = []
       
 
         lista_propozitii = []           # punem fiecare propozitie intr-o lista
         for i in range(nr_propozitii):
         for i in range(nr_propozitii):
             propozitie = file_in.readline().strip()
             propozitie = file_in.readline().strip()
             lista_propozitii.append(propozitie)
             lista_propozitii.append(propozitie)


         validare(nr_propozitii, lista_propozitii)
         validare(nr_propozitii, lista_propozitii)       # apelul functiei de validare
         vocmax(lista_propozitii)
         vocmax(lista_propozitii)                       # apelul functiei de rezolvare


     except ValueError:
     except ValueError:
Line 96: Line 96:
     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 19:23, 2 May 2023

Cerința

Să se scrie un program care citește mai multe propoziții și determină propoziția cu cele mai multe vocale.

Date de intrare

Fișierul de intrare vocmaxin.txt conține pe prima linie un număr natural n, iar pe următoarele n linii câte o propoziție alcătuită din litere mici ale alfabetului englez și spații.

Date de ieșire

Dacă datele sunt introduse corect, fișierul de ieșire vocmaxout.txt va conține pe prima linie: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa propoziția cu cele mai multe vocale. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"

Restricții și precizări

  • 0<n<100
  • fiecare propoziție va conține cel mult 250 de caractere
  • dacă sunt mai multe propoziții cu număr maxim de vocale se poate afișa oricare

Exemplu 1

vocmaxin.txt
4
somnoroase pasarele
pe la cuiburi se aduna
se ascund in ramurele
noapte buna
vocmaxout.txt
Datele introduse corespund restricțiilor impuse.
pe la cuiburi se aduna


Exemplu 2

vocmaxin.txt
2
ANA ARE MERE
bACNOTA folosita "$"
vocmaxout.txt
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

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

  1. 0090 Numar Maxim Vocale

def validare(nr_prop, propozitii): # functia de validare a datelor de intrare

   if nr_prop <= 0 or nr_prop >= 100:
       raise ValueError
   # daca dsatele de intrare nu corespund, ridicam eroarea ValueError
   if len(propozitii) != nr_prop:
       raise ValueError
   for prop in propozitii:     # verificam toate propozitiile sa aiba caractere doar litere mici si spatii
       if len(prop) > 255:
           raise ValueError
       for litera in prop:
           if (litera < 'a' or litera > 'z') and litera != ' ':
               raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse\n")


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

   if litera in "aeiou":
       return True
   return False


def vocmax(propozitii): # functia de rezolvare

   nr_maxim_vocale = 0         # variabila in care salvam numarul maxim de vocale
   propozitia_dorita = ""      # variabila in care salvam propozitia cu cele mai multe vocale
   for prop in propozitii:     # parcurgem fiecare propozitie
       nr_vocale = 0
       for caracter in prop:
           if vocala(caracter):
               nr_vocale += 1      # numaram cate vocale sunt in ea
       if nr_vocale > nr_maxim_vocale:     # daca e mai mult de cat era maximul, updatam maximul si propozitia dorita
           nr_maxim_vocale = nr_vocale
           propozitia_dorita = prop
   if len(propozitia_dorita) > 0:      # daca am gasit o propozitie cu vocale o afisam
       file_out.write(propozitia_dorita)
   else:
       file_out.write(propozitii[0])       # daca nu, afisam prima propozitie


if __name__ == '__main__':

   file_in = open("vocmaxin.txt", "r")         # declararea fisierelor
   file_out = open("vocmaxout.txt", "w")       # declararea fisierelor out trebuie cu optiunea w (write)
   # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
   try:
       nr_propozitii = int(file_in.readline())     # citim numarul de propozitii
       
       lista_propozitii = []           # punem fiecare propozitie intr-o lista
       for i in range(nr_propozitii):
           propozitie = file_in.readline().strip()
           lista_propozitii.append(propozitie)
       validare(nr_propozitii, lista_propozitii)       # apelul functiei de validare
       vocmax(lista_propozitii)                        # 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>