1423 - Vocale Vector: Difference between revisions

From Bitnami MediaWiki
explicatii
 
(2 intermediate revisions by the same user not shown)
Line 6: Line 6:
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 componentele vectorului rearanjat, separate prin spatii. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"
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 componentele vectorului rearanjat, separate prin spatii. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"
== Restricții și precizări ==
== Restricții și precizări ==
: *1 ≤ n ≤ 4000
: 1 ≤ n ≤ 4000
:Codurile ASCII ale vocalelor sunt:
:Codurile ASCII ale vocalelor sunt:
:*a= 97
:* a= 97
:*e= 101
:* e= 101
:*i= 105
:* i= 105
:*o= 111
:* o= 111
:*u= 117
:* u= 117


== Exemplu 1 ==
== Exemplu 1 ==
Line 39: Line 39:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 1423 VocaleVector
# 1423 VocaleVector


def validare(nr_elemente, sir_litere):
def validare(nr_elemente, sir_litere):         # functia de verificare a datelor de intrare
    # in cazul in care nu este respectata vreo restrictie, vom marca acest lucru prin eroarea ValueError
     if nr_elemente > 4000 or nr_elemente < 0:
     if nr_elemente > 4000 or nr_elemente < 0:
         raise ValueError
         raise ValueError
Line 56: Line 57:




# functie care verifica daca o anumita litera este vocala
def vocala(litera):
def vocala(litera):
     if litera in "aeiou":
     if litera in "aeiou":
Line 63: Line 65:


def vocalevector(sir_litere):
def vocalevector(sir_litere):
     sir_vocale = []
     sir_vocale = []                 # impartim sirul in 2 siruri, unul cu vocale si unul cu consoane
     sir_consoane = []
     sir_consoane = []               # astfel se va pastra ordinea
     for litera in sir_litere:
     for litera in sir_litere:
         if vocala(litera):
         if vocala(litera):
             sir_vocale.append(litera)
             sir_vocale.append(litera)   # daca e vocala adaugam litera in sirul de vocale
         else:
         else:
             sir_consoane.append(litera)
             sir_consoane.append(litera)     # altfel, adaugam in sirul de consoane


     for litera in sir_vocale:
     for litera in sir_vocale:       # intai afisam vocalele
         print(litera, end=" ")
         print(litera, end=" ")


     for litera in sir_consoane:
     for litera in sir_consoane:     # apoi consoanele
         print(litera, end=" ")
         print(litera, end=" ")


Line 80: Line 82:
if __name__ == '__main__':
if __name__ == '__main__':


     try:
     try:                           # in cazul in care apare vreo eroare, aceasta se datoreaza datelor de intrare
         n = int(input("Introduceti numarul n: "))
         n = int(input("Introduceti numarul n: "))       # citirea lui n si a sirului
         sir = input("Introduceti sirul: ")
         sir = input("Introduceti sirul: ")


         sir = sir.split()
         sir = sir.split()             # transformam sirul intr-o lista formata din literele separate printr-un spatiu


         validare(n, sir)
         validare(n, sir)               # apelam functia de validare


         vocalevector(sir)
         vocalevector(sir)               # apelam functia de rezolvare


    # ne asteptam la 2 tipuri de erori cauzate de datele de intrare, le tratam corespunzator
     except ValueError:
     except ValueError:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
     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:04, 25 April 2023

Cerința[edit | edit source]

Se citesc de la tastatura n elemente ale unui vector alcatuit exclusiv din litere mici ale alfabetului englez. Rearanjati vectorul astfel incat vocalele sa fie plasate pe primele pozitii. Vocalele (si consoanele) isi vor pastra ordinea initiala, de la stanga la dreapta.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n litere mici, separate prin spații.

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 componentele vectorului rearanjat, separate prin spatii. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"

Restricții și precizări[edit | edit source]

1 ≤ n ≤ 4000
Codurile ASCII ale vocalelor sunt:
  • a= 97
  • e= 101
  • i= 105
  • o= 111
  • u= 117

Exemplu 1[edit | edit source]

Intrare
12
b a e d x y p i m f i c
Ieșire
Datele introduse corespund restricțiilor impuse.
a e i i b d x y p m f c


Exemplu 2[edit | edit source]

Intrare
5
h t a k e
Ieșire
a e h t k

Exemplu 3[edit | edit source]

Intrare
4
B A I A
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Explicație[edit | edit source]

Ex. 1: Se iau toate vocalele (a, e, i, i) si se plasează pe primele locuri, în ordinea inițiala, iar consoanele rămase (b, d, x, y, p, m, f, c) se vor așeza după ele, tot în ordinea inițială.
Ex. 2: Se iau toate vocalele (a, e) și se plasează pe primele locuri, în ordinea inițială, iar consoanele rămase (h, t, k) se vor așeză după ele, tot în ordinea inițială.


Rezolvare[edit | edit source]

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

  1. 1423 VocaleVector

def validare(nr_elemente, sir_litere): # functia de verificare a datelor de intrare

   # in cazul in care nu este respectata vreo restrictie, vom marca acest lucru prin eroarea ValueError
   if nr_elemente > 4000 or nr_elemente < 0:
       raise ValueError
   for litera in sir_litere:
       if litera < 'a' or litera > 'z':
           raise ValueError
   if nr_elemente != len(sir_litere):
       raise ValueError
   print("Datele de intrare corespund restrictiilor impuse")


  1. functie care verifica daca o anumita litera este vocala

def vocala(litera):

   if litera in "aeiou":
       return True
   return False


def vocalevector(sir_litere):

   sir_vocale = []                 # impartim sirul in 2 siruri, unul cu vocale si unul cu consoane
   sir_consoane = []               # astfel se va pastra ordinea
   for litera in sir_litere:
       if vocala(litera):
           sir_vocale.append(litera)   # daca e vocala adaugam litera in sirul de vocale
       else:
           sir_consoane.append(litera)     # altfel, adaugam in sirul de consoane
   for litera in sir_vocale:       # intai afisam vocalele
       print(litera, end=" ")
   for litera in sir_consoane:     # apoi consoanele
       print(litera, end=" ")


if __name__ == '__main__':

   try:                            # in cazul in care apare vreo eroare, aceasta se datoreaza datelor de intrare
       n = int(input("Introduceti numarul n: "))       # citirea lui n si a sirului
       sir = input("Introduceti sirul: ")
       sir = sir.split()             # transformam sirul intr-o lista formata din literele separate printr-un spatiu
       validare(n, sir)               # apelam functia de validare
       vocalevector(sir)               # apelam functia de rezolvare
   # ne asteptam la 2 tipuri de erori cauzate de datele de intrare, le tratam corespunzator
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       print("Datele de intrare nu corespund restrictiilor impuse")

</syntaxhighlight>