0892 - Pasareste 1: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dă un vector cu '''n''' elemente, numere naturale și un număr '''k'''. Ordonați crescător primele '''k''' elemente ale vectorului și descrescător ultimele '''n-k''' elemente.Pentru sortare se va folosit metoda '''QuickSort''' sau '''MergeSort'''. == Date de intrare == Programul citește de la tastatură numerele '''n''' și '''k''', iar apoi '''n''' numere naturale, reprezentând elementele vectorului. == Date de ieşire == Programul va afișa pe ecra...
 
No edit summary
Line 1: Line 1:
== Cerinţa ==
== Cerinţa ==
Se dă un vector cu '''n''' elemente, numere naturale și un număr '''k'''. Ordonați crescător primele '''k''' elemente ale vectorului și descrescător ultimele '''n-k''' elemente.Pentru sortare se va folosit metoda '''QuickSort''' sau '''MergeSort'''.
Limba păsărească este foarte simplă; și asemănătoare cu limba română! Un text scris în română se traduce în păsărește astfel: după fiecare vocală se inserează litera '''p''' și vocala respectivă.
 
Se dă o propoziție scrisă în limba păsărească. se traducă în limba română.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numerele '''n''' și '''k''', iar apoi '''n''' numere naturale, reprezentând elementele vectorului.
Programul citește de la tastatură un șir de caractere '''s'''.
== Date de ieşire ==
== Date de ieşire ==
Programul va afișa pe ecran elementele vectorului, separate prin exact un spațiu, după efectuarea operațiilor cerute.
Programul va afișa pe ecran șirul '''t''', reprezentând traducerea în română a șirului '''s'''.
== Restricții și precizări ==
== Restricții și precizări ==
* '''1 &les; k < n &les; 200 000'''
* șirurile '''s''' și '''t''' vor avea cel mult '''255''' de caractere
* cele '''n''' numere citite vor fi mai mici decât '''1 000 000 000'''
* șirul '''s''' va conține litere mici ale alfabetului englez și spații
* vocalele sunt: '''aeiou'''
* '''șirul dat în limba păsărească este corect'''
== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
  7 3
  apanapa aparepe meperepe
13 1 10 15 3 7 11
; Ieșire
; Ieșire
  Datele introduse corespund restricțiilor impuse.
  Datele introduse corespund restricțiilor impuse.
  1 10 13 15 11 7 3
  ana are mere
<br>
<br>
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
  fhgjfhgfgj
  78675878576875
; Ieșire
; Ieșire
  Datele introduse nu corespund restricțiilor impuse.
  Datele introduse nu corespund restricțiilor impuse.
Line 24: Line 27:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# Definim funcția de verificare a valorilor n, k și a elementelor vectorului
# Definim funcția de verificare a valorilor s
def verificare(n_val, k_val, vector_verificare):
def verificare(s_val):
     # Verificăm dacă n și k respectă restricțiile problemei
     # Verificăm dacă s respectă restricțiile problemei
     if 1 <= k_val < n_val <= 200000:
     if 1 <= len(s_val) <= 255 and all(c.islower() or c.isspace() for c in s_val):
        # Verificăm dacă toate elementele vectorului sunt mai mici decât 1 000 000 000
        # Dacă valorile sunt valide, returnăm True
        if all(x < 1000000000 for x in vector_verificare):
        return True
            # Dacă toate condițiile sunt îndeplinite, returnăm True
     else:
            return True
        # Dacă valorile nu sunt valide, ridicăm o excepție
     return False
        raise ValueError




# Definim funcția pentru sortarea vectorului
# Definim funcția pentru traducerea din limba păsărească în română
def sortare_vector(k_val, vector_sortare):
def traducere_pasareasca(s_pasareasca):
     # Sortăm primele k elemente în ordine crescătoare
     vocale = 'aeiou'
     vector_sortare[:k_val] = sorted(vector_sortare[:k_val])
    t = ''
    # Sortăm ultimele elemente în ordine descrescătoare
    i = 0
    vector_sortare[k_val:] = sorted(vector_sortare[k_val:], reverse=True)
     while i < len(s_pasareasca):
    # Returnăm vectorul sortat
        if s_pasareasca[i] in vocale:
     return vector_sortare
            t += s_pasareasca[i]
            i += 3
        else:
            t += s_pasareasca[i]
            i += 1
     return t




# Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == '__main__':
if __name__ == '__main__':
   
     try:
     try:
         # Citim numărul de elemente din vector
         # Citim șirul de caractere
         n = int(input("Introduceti numarul de elemente din vector: "))
         s = input("Introduceti sirul de caractere: ")
        # Citim numărul k
        k = int(input("Introduceti numarul k: "))
        # Citim elementele vectorului
        vector = list(map(int, input("Introduceti elementele vectorului: ").split()))


         # Verificăm dacă datele introduse sunt valide
         # Verificăm dacă datele introduse sunt valide
         if verificare(n, k, vector):
         if verificare(s):
             # Dacă datele sunt valide, afișăm un mesaj de confirmare
             # Dacă datele sunt valide, afișăm un mesaj de confirmare
             print("Datele introduse corespund restricțiilor impuse.")
             print("Datele introduse corespund restricțiilor impuse.")
            # Sortăm vectorul și afișăm rezultatul
 
            print(' '.join(map(str, sortare_vector(k, vector))))
        # Traducem șirul din limba păsărească în română și îl afișăm
        else:
        print(traducere_pasareasca(s))
            print("Datele introduse nu corespund restricțiilor impuse.")
 
     # Tratăm cazul în care datele introduse nu sunt numere
     # Tratăm cazul în care datele introduse nu sunt valide
     except ValueError:
     except ValueError:
        # Afișăm un mesaj de eroare
         print("Datele introduse nu corespund restricțiilor impuse.")
         print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Revision as of 16:21, 13 December 2023

Cerinţa

Limba păsărească este foarte simplă; și asemănătoare cu limba română! Un text scris în română se traduce în păsărește astfel: după fiecare vocală se inserează litera p și vocala respectivă.

Se dă o propoziție scrisă în limba păsărească. Să se traducă în limba română.

Date de intrare

Programul citește de la tastatură un șir de caractere s.

Date de ieşire

Programul va afișa pe ecran șirul t, reprezentând traducerea în română a șirului s.

Restricții și precizări

  • șirurile s și t vor avea cel mult 255 de caractere
  • șirul s va conține litere mici ale alfabetului englez și spații
  • vocalele sunt: aeiou
  • șirul dat în limba păsărească este corect

Exemplul 1

Intrare
apanapa aparepe meperepe
Ieșire
Datele introduse corespund restricțiilor impuse.
ana are mere


Exemplul 2

Intrare
78675878576875
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

  1. Definim funcția de verificare a valorilor s

def verificare(s_val):

   # Verificăm dacă s respectă restricțiile problemei
   if 1 <= len(s_val) <= 255 and all(c.islower() or c.isspace() for c in s_val):
       # Dacă valorile sunt valide, returnăm True
       return True
   else:
       # Dacă valorile nu sunt valide, ridicăm o excepție
       raise ValueError


  1. Definim funcția pentru traducerea din limba păsărească în română

def traducere_pasareasca(s_pasareasca):

   vocale = 'aeiou'
   t = 
   i = 0
   while i < len(s_pasareasca):
       if s_pasareasca[i] in vocale:
           t += s_pasareasca[i]
           i += 3
       else:
           t += s_pasareasca[i]
           i += 1
   return t


  1. Verificăm dacă acest script este rulat direct (nu este importat ca modul)

if __name__ == '__main__':

   try:
       # Citim șirul de caractere
       s = input("Introduceti sirul de caractere: ")
       # Verificăm dacă datele introduse sunt valide
       if verificare(s):
           # Dacă datele sunt valide, afișăm un mesaj de confirmare
           print("Datele introduse corespund restricțiilor impuse.")
       # Traducem șirul din limba păsărească în română și îl afișăm
       print(traducere_pasareasca(s))
   # Tratăm cazul în care datele introduse nu sunt valide
   except ValueError:
       # Afișăm un mesaj de eroare
       print("Datele introduse nu corespund restricțiilor impuse.")

</syntaxhighlight>