This is an old revision of the document!
Să se scrie un program pentru afișarea pe ecran a liniilor aflate pe poziții impare dintr-un fișier text. Fiecare linie va fi precedată de numărul ei și un spațiu.
În implementare, se va folosi un obiect de tip LineNumberReader.
Cerințe:
Pentru validarea acestei cerințe, puteți folosi fișierul text test01.in pus la dispoziție în arhiva laboratorului.
Să se scrie un program care citește un text de la tastatură și îl salvează într-un fișier pe disc. Citirea se va face până la introducerea cuvântului exit.
În implementare se va utiliza metoda readLine() pentru un obiect de tip DataInputStream sau BufferedReader.
Tratați toate excepțiile care ar putea să apară!
Să se implementeze un program care citește din fișierul test02.in un text și determină numărul de cuvinte din text.
Pentru citire se vor utiliza un obiect de tip FileReader și unul de tip StreamTokenizer.
FileReader in = new FileReader(new File("test02.in")); StreamTokenizer str = new StreamTokenizer(in);
Realizați o arhitectură unificată, similară cu Collections, pentru manipularea listelor care să conțină:
Veți porni implementarea de la clasa ListUtil, pusă la dispoziție în arhiva laboratorului.
foldl(function, init, list) Returnează rezultatul aplicării funcției function pe rând asupra unui element din listă și a unui acumulator init. Ordinea folosirii elementelor din listă este de la stânga la dreapta.
foldl(f(x, y) = x + y, 5, [0, 1, 2, 3]) => 11
foldr(function, init, list) Are un comportament similar cu foldl, însă ordinea folosirii elementelor din listă este de la dreapta la stânga.
foldr(f(x, y) = y, 4, [0, 1, 2, 3]) => 0
map(function, list) Returnează lista rezultatelor aplicării unei funcții f asupra fiecărui element dintr-o listă.
map(f(x) = 2*x, [0, 1, 2, 3]) => [0, 2, 4, 6]
filter(predicat, list) Returnează lista elementelor dintr-o listă care satisfac un predicat p (un predicat îl vom percepe ca o funcție care are un rezultat de tip Boolean).
filter(f(x) = x % 2 == 0, [0, 1, 2, 3]) => [0, 2]
reduce(function, list) Aplică funcția pentru primele două elemente din listă, apoi pentru rezultatul obținut anterior și următorul element și tot așa.
reduce(f(x, y) = x + y, [47, 11, 42, 13]) => 113
all(predicat, list) Primește un predicat (metodă ce are ca rezultat un boolean) și verifică dacă toate elementele din listă satisfac predicatul.
all(f(x) = x > 0, [0, 1, 2, 3]) => False all(f(x) = x >= 0, [0, 1, 2, 3]) => True
any(predicat, list) Primește un predicat și verifică dacă există cel puțin un element în listă care satisface predicatul.
any(f(x) = x < 0, [1, 2, 3, 4]) => False any(f(x) = x % 2 == 0, [1, 2, 3]) => True