Se propune următoarea schemă de arhivare-dezarhivare pentru texte care nu conţin caractere numerice. La arhivare, orice caracter nealfabetic al textului este copiat direct în textul arhivat. Un cuvânt este copiat în textul arhivat doar dacă este la prima apariţie a lui şi de asemenea este adăugat la sfârşitul unei liste de cuvinte. În apariţiile ulterioare cuvântul va fi înlocuit cu numărul de ordine din listă respectivă (numerotarea poziţiilor în listă începe de la ).
Cerinţă
Scrieţi un program care:
- citeşte din fişierul
arhivare.in
un text; - determină tipul operaţiei (arhivare/dezarhivare)
- scrie în fișierul
arhivare.out
textul arhivat/dezarhivat.
Date de intrare
Fișierul de intrare arhivare.in
va conține un șir de caractere , reprezentând un text.
Date de ieșire
În fişierul arhivare.out
se va scrie textul arhivat/dezarhivat.
Restricții și precizări
- șirul de caractere conține cel mult caractere, iar cuvintele au cel mult de caractere, continand litere mici ale alfabetului.
- în text există maxim cuvinte
- Un text se consideră că trebuie dezarhivat dacă el conţine cel puţin o cifră. Caracterele alfabetice sunt .
Exemplul 1
arhivare.in
mult mai mult din putin cat mai putin, mai-mai ca te pune pe ganduri cat mai mult.
arhivare.out
mult mai 1 din putin cat 2 4, 2-2 ca te pune pe ganduri 5 2 1.
Explicație
În exemplul de mai sus, "mai-mai" reprezintă două cuvinte. Lista de cuvinte generată în exemplul precedent este:
mult
mai
din
putin
cat
ca
te
pune
pe
ganduri