.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » dir

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
dir


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
2MB / 1MB

Costel trebuie să realizeze, împreună cu echipa sa, o aplicaţie software pentru gestiunea fişierelor de pe hard-disc, sarcina sa fiind aceea de a scrie un modul pentru determinarea căilor tuturor fişierelor de date aflate în structura arborescentă a folderelor de pe disc. Membrii echipei au stabilit o codificare proprie pentru memorarea structurii fişierelor de pe disc, utilizând un şir de caractere. Specificaţiile tehnice sunt următoarele:
– folderul este un fişier de tip special, care poate conţine fişiere şi/sau foldere (acestea fiind considerate subfoldere ale folderului respectiv);
– numele folderelor încep cu o literă, au maxim 30 de caractere şi sunt scrise cu majuscule;
– numele fişierelor de date încep cu o literă, au maxim 30 de caractere şi sunt scrise cu minuscule;
– caracterele utilizate pentru numele fişierelor şi folderelor sunt literele alfabetului englez şi cifrele arabe;
– reprezentarea structurii fişierelor sub forma unui şir de caractere se realizează după următoarea regulă:
NUME_FOLDER(lista_de_foldere_şi_fişiere)
unde lista_de_foldere_si_fisiere, posibil vidă, conţine fişierele şi/sau subfolderele folderului NUME_FOLDER, separate prin virgulă. Subfolderele se reprezintă respectând aceeaşi regulă.
De exemplu, structura de fişiere şi foldere din figura de mai jos



se reprezintă prin şirul de caractere:
FOLDER1(FOLDER2(),FOLDER3(FOLDER4(poveste,basm),basm))

Cerinţă

Scrieţi un program care, cunoscând şirul de caractere ce codifică o structură de fişiere de pe disc, determină calea pentru fiecare fişier de date din structură. Prin cale a unui fişier se înţelege o succesiune de foldere, fiecare folder fiind urmat de caracterul \(backslash), începând de la folderul aflat pe cel mai înalt nivel al structurii (primul specificat în şirul ce codifică structura de fişiere), până la subfolderul în care se află fişierul de date respectiv şi terminată cu numele fişierului. Căile determinate vor fi afişate în ordine lexicografică.

Date de intrare

Fişierul de intrare dir.in conţine pe prima linie şirul de caractere ce codifică structura de fişiere de pe disc.

Date de ieşire

Fişierul de ieşire dir.out va conţine pe prima linie un număr natural N reprezentând numărul de fişiere de date găsite. Pe următoarele N linii se vor scrie, în ordine lexicografică, căile ce permit identificarea fişierelor găsite, în formatul: F1\F2\...\Fn\fisier, câte o cale pe o linie.

Restricţii

Şirul de caractere ce codifică structura de fişiere este nevid şi conţine maxim 1600 de caractere.
Structura de foldere conţine cel puţin un folder şi cel puţin un fişier.
Numărul de fişiere de date este cel mult 100.
Lungimea căii unui fişier este de cel mult 255 caractere.
Şirul x1x2…xn este mai mic lexicografic decât şirul y1y2…ym, dacă există k astfel încât x1=y1,x2=y2,…,xk-1=yk-1 şi (xk<yk sau k=n+1).

Exemple

dir.indir.out
FOLDER1(FOLDER2(),FOLDER3(FOLDER4(poveste,basm),basm)) 3 FOLDER1\FOLDER3\FOLDER4\basm FOLDER1\FOLDER3\FOLDER4\poveste FOLDER1\FOLDER3\basm

autor: Prof. Alin Burţa
propunător: Prof. Marinel Şerban
Liceul de Informatică “Grigore Moisil”
marinel_serban@yahoo.com
Articole recomandate
Probleme recomandate
De la OJI 2007: alee, cartele, ceas2, cezar1, cabina, cod5, dreptc, furnica, numere8, paritate, test1
De acelaşi autor: picnic, expresie, origami, magic3, suma, race, balls, pcod, cat, cai1, cub1, cifru, cuburi2, cub2, adun, atac2, comp, mxl, joc19, cifru5, gradina1, joc21
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, index, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, cifru1, limbaj, adun, ecuatii, paritate, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, clase, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Despre stiva: sl, teren, reactii, complex, auto, bile3, chimie2, vile, puncte1, masina3, matrice1, stiva, munte2, perle, basm, predecesor, expresie1, telecab, expresie2, liste, intervale, jocs, expeval, copaci2, plus, azeval, unific, swap, stiva1, ecp, charlie
Despre recursivitate: tren, mere, chimie, sarpe, soldati, formule, infinit, compress, ploaia, cartoane, sub, metro, windows, lacuri, apel, maxq, pav, joc11, paianjen, suma2, monkey, csir, lsort, imagine, desert, echitabil, rez, logic, gradina, links, dreptunghiuri, expresie1, cumpanit, reziston, antitero, sablon3
Chestionare recomandate
surse trimise | ajutor