2997 - Prescurtat: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
Line 29: Line 29:


def Prescurtat(s):
def Prescurtat(s):
     # lista cu cuvintele din text
     con = ""  # Variabila pentru stocarea sirului prescurtat
     cuvinte = s.split()
     tokens = s.split(" ") # Impartirea sirului s in token-uri folosind spatiul ca delimitator
 
     for token in tokens:
     # dictionarul cu prescurtarile si cuvintele complete
        lp = len(token)  # Lungimea token-ului curent
    prescurtari = {
         if token[lp-1] == '.':  # Verificam daca token-ul se termina cu punct
         "COL.": "COLEGIUL",
            if token[:2] == 'CO': # Verificam daca primele doua caractere ale token-ului sunt 'CO'
        "LIC.": "LICEUL",
                con += "COLEGIUL " # Adaugam la sirul prescurtat 'COLEGIUL '
        "NAT.": "NATIONAL",
            elif token[:2] == 'LI': # Verificam daca primele doua caractere ale token-ului sunt 'LI'
        "TEOR.": "TEORETIC"
                con += "LICEUL " # Adaugam la sirul prescurtat 'LICEUL '
    }
            elif token[:2] == 'NA': # Verificam daca primele doua caractere ale token-ului sunt 'NA'
 
                con += "NATIONAL " # Adaugam la sirul prescurtat 'NATIONAL '
    # lista cuvintelor complete
            elif token[:2] == 'TE': # Verificam daca primele doua caractere ale token-ului sunt 'TE'
    cuvinte_complete = []
                con += "TEORETIC "  # Adaugam la sirul prescurtat 'TEORETIC '
 
    # parcurgem fiecare cuvant
    for cuvant in cuvinte:
        # verificam daca cuvantul este o prescurtare
        if cuvant in prescurtari:
            # adaugam cuvantul complet in lista
            cuvinte_complete.append(prescurtari[cuvant])
         else:
         else:
             # altfel, adaugam cuvantul asa cum este in lista
             con += token + " "  # Daca token-ul nu se termina cu punct, il adaugam la sirul prescurtat cu un spatiu la final
            cuvinte_complete.append(cuvant)
     con = con.rstrip() # Stergem spatiile de la sfarsitul sirului prescurtat
 
     return con
    # concatenam cuvintele complete in numele institutiei
     nume = " ".join(cuvinte_complete)
 
    # eliminam punctul final, daca exista
    if nume[-1] == ".":
        nume = nume[:-1]
 
    # actualizam parametrul s cu numele institutiei fara prescurtari
     s = nume
 


if __name__ == "__main__":
if __name__ == "__main__":
     s = input("Introduceți s: ")
     s = input("Introduceti sirul de caractere: ")  # Citim sirul de la tastatura
    print("Inainte:", s)  # Afisam sirul inainte de prescurtare
    s = Prescurtat(s)  # Apelam functia Prescurtat pentru a prescurta sirul
    print("Dupa:", s) # Afisam sirul dupa prescurtare


 
    if validare(s):
  if validare(s):
         print("Datele introduse corespund restricțiilor impuse.")
         print("Datele introduse corespund restricțiilor impuse.")
        Prescurtat(s)
     else:
     else:
         print("Datele introduse nu corespund restricțiilor impuse.")
         print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 14:11, 26 April 2023

Cerință[edit | edit source]

Scrieți funcția cu următorul antet:

void Prescurtat(char s[])

Funcția primește ca parametru un text de cel mult 50 de caractere, alcătuit din cuvinte separate prin câte un spațiu și formate din litere mari ale alfabetului englez, urmate eventual de caracterul . (punct), dacă sunt scrise prescurtat. Textul reprezintă numele unei instituții de învățământ și doar cuvintele din mulțimea {COLEGIUL, LICEUL, NATIONAL, TEORETIC} pot fi prescurtate, eliminându-se ultimele lor litere. Funcția va returna tot prin intermediul parametrului s numele instituției scris fără prescurtări.

Restricții de precizări[edit | edit source]

  • Lungimea inițială a șirului s va fi de cel mult 50, iar la final de cel mult 100.
  • Puteți utiliza funcțiile pentru șirurile de caractere din biblioteca cstring

Exemplul 1[edit | edit source]

Intrare
COLEG. NAT. DE INFORMATICA
Ieșire
Datele introduse corespund restricțiilor impuse.
COLEGIUL NATIONAL DE INFORMATICA

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line="1" start="1"> def validare(s):

   return s.isalpha()

def Prescurtat(s):

   con = ""  # Variabila pentru stocarea sirului prescurtat
   tokens = s.split(" ")  # Impartirea sirului s in token-uri folosind spatiul ca delimitator
   for token in tokens:
       lp = len(token)  # Lungimea token-ului curent
       if token[lp-1] == '.':  # Verificam daca token-ul se termina cu punct
           if token[:2] == 'CO':  # Verificam daca primele doua caractere ale token-ului sunt 'CO'
               con += "COLEGIUL "  # Adaugam la sirul prescurtat 'COLEGIUL '
           elif token[:2] == 'LI':  # Verificam daca primele doua caractere ale token-ului sunt 'LI'
               con += "LICEUL "  # Adaugam la sirul prescurtat 'LICEUL '
           elif token[:2] == 'NA':  # Verificam daca primele doua caractere ale token-ului sunt 'NA'
               con += "NATIONAL "  # Adaugam la sirul prescurtat 'NATIONAL '
           elif token[:2] == 'TE':  # Verificam daca primele doua caractere ale token-ului sunt 'TE'
               con += "TEORETIC "  # Adaugam la sirul prescurtat 'TEORETIC '
       else:
           con += token + " "  # Daca token-ul nu se termina cu punct, il adaugam la sirul prescurtat cu un spatiu la final
   con = con.rstrip()  # Stergem spatiile de la sfarsitul sirului prescurtat
   return con

if __name__ == "__main__":

   s = input("Introduceti sirul de caractere: ")  # Citim sirul de la tastatura
   print("Inainte:", s)  # Afisam sirul inainte de prescurtare
   s = Prescurtat(s)  # Apelam functia Prescurtat pentru a prescurta sirul
   print("Dupa:", s)  # Afisam sirul dupa prescurtare
   if validare(s):
       print("Datele introduse corespund restricțiilor impuse.")
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>