0890 - Nr Vocale: Difference between revisions
Pagină nouă: == Cerința == Se dă o propoziție formată din litere mari și mici ale alfabetului englez, cifre, spații și semne de punctuație, în care literele mari și mici se consideră identice. Determinați vocala din șir cu număr maxim de apariții. == Date de intrare == Programul citește de la tastatură un șir 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... |
No edit summary |
||
Line 23: | Line 23: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 0890 NrVocale | # 0890 NrVocale | ||
def validare(propozitie): | def validare(propozitie): # functia de validare a datelor de intrare | ||
if len(propozitie) > 255: | if len(propozitie) > 255: | ||
raise ValueError | raise ValueError | ||
# daca dsatele de intrare nu corespund, ridicam eroarea ValueError | |||
print("Datele de intrare corespund restrictiilor impuse") | print("Datele de intrare corespund restrictiilor impuse") | ||
return True | return True | ||
def vocala(litera): | def vocala(litera): # functia de verificare daca e vocala (include si majuscule) | ||
lista_vocale = "aeiouAEIOU" | lista_vocale = "aeiouAEIOU" | ||
if litera in lista_vocale: | if litera in lista_vocale: | ||
Line 41: | Line 41: | ||
def nrvocale(propozitie): | def nrvocale(propozitie): # functia de rezolvare | ||
for i in range(128): | frecventa_litere = [] # ne creem un vector de frecventa pentru litere | ||
for i in range(128): # pana la 128 se afla ultimul cod ascii pentru litere | |||
frecventa_litere.append(0) | frecventa_litere.append(0) | ||
for litera in propozitie: | for litera in propozitie: | ||
if vocala(litera): | if vocala(litera): # daca e vocala crestem frecventa | ||
if litera >= 'a': | if litera >= 'a': | ||
frecventa_litere[ord(litera) - 32] += 1 | frecventa_litere[ord(litera) - 32] += 1 | ||
# daca e vocala mica, crestem frecventa la exhivalentul ei in majuscule | |||
# deoarece in problema nu se tine cont daca e litera mare sau mica si le numaram pe toate la majuscule | |||
else: | else: | ||
frecventa_litere[ord(litera)] += 1 | frecventa_litere[ord(litera)] += 1 | ||
aparitii_max = max(frecventa_litere) | aparitii_max = max(frecventa_litere) # gasim numarul cel mai mare de aparitii de vocale | ||
for i in range(len(frecventa_litere)): | for i in range(len(frecventa_litere)): # parcurgem iar vectorul de frecventa | ||
if frecventa_litere[i] == aparitii_max: | if frecventa_litere[i] == aparitii_max: # daca am gasit vocala cu nr maxim de aparitii o afisam | ||
print(chr(i)) | print(chr(i)) | ||
return | return # si incheiem programul | ||
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 textul ") | sir = input(f"Introduceti textul ") # citirea textului | ||
validare(sir) | validare(sir) # apelul functiei de validare | ||
nrvocale(sir) | nrvocale(sir) # apelul functiei de rezolvare | ||
except ValueError: | except ValueError: | ||
Line 73: | Line 75: | ||
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 18:58, 2 May 2023
Cerința[edit | edit source]
Se dă o propoziție formată din litere mari și mici ale alfabetului englez, cifre, spații și semne de punctuație, în care literele mari și mici se consideră identice. Determinați vocala din șir cu număr maxim de apariții.
Date de intrare[edit | edit source]
Programul citește de la tastatură un șir 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 vocala determinată, literă mare. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări[edit | edit source]
- șirul citit va avea cel mult 255 caractere
- dacă în șir există mai multe vocale cu număr maxim de apariții, se va afișa prima în ordine alfabetică
- vocalele sunt AEIOUaeiou
Exemplu 1[edit | edit source]
- Intrare
- Ana are 5 mere si trei nuci
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- E
Exemplu 2[edit | edit source]
- Intrare
- $$$$$$$$$$$
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0890 NrVocale
def validare(propozitie): # functia de validare a datelor de intrare
if len(propozitie) > 255: raise ValueError # daca dsatele de intrare nu corespund, ridicam eroarea ValueError print("Datele de intrare corespund restrictiilor impuse") return True
def vocala(litera): # functia de verificare daca e vocala (include si majuscule)
lista_vocale = "aeiouAEIOU" if litera in lista_vocale: return True else: return False
def nrvocale(propozitie): # functia de rezolvare
frecventa_litere = [] # ne creem un vector de frecventa pentru litere for i in range(128): # pana la 128 se afla ultimul cod ascii pentru litere frecventa_litere.append(0)
for litera in propozitie: if vocala(litera): # daca e vocala crestem frecventa if litera >= 'a': frecventa_litere[ord(litera) - 32] += 1 # daca e vocala mica, crestem frecventa la exhivalentul ei in majuscule # deoarece in problema nu se tine cont daca e litera mare sau mica si le numaram pe toate la majuscule else: frecventa_litere[ord(litera)] += 1
aparitii_max = max(frecventa_litere) # gasim numarul cel mai mare de aparitii de vocale
for i in range(len(frecventa_litere)): # parcurgem iar vectorul de frecventa if frecventa_litere[i] == aparitii_max: # daca am gasit vocala cu nr maxim de aparitii o afisam print(chr(i)) return # si incheiem programul
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 textul ") # citirea textului validare(sir) # apelul functiei de validare nrvocale(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>