2997 - Prescurtat

De la Universitas MediaWiki

Cerință

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

  • 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

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

Rezolvare ver. 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.")