# $Author: saulius $ # $Revision: 9750 $ # $Date: 2022-02-08 06:24:00 +0000 (Tue, 08 Feb 2022) $ Vektorių failų "gražaus" formatavimo programa ============================================= PROGRAMA ======== Parašykite Perl programą, kuri atspausdina vektorių failą pagal nurodytą formatą. Programos vardas: vformat Programos iškvietimas: vformat vektoriai1.dat [vektoriai2.dat ...] vformat "%6.3f" vektoriai1.dat [vektoriai2.dat ...] Jei pirmas programos parametras turi simbolį "%", jis laikomas printf formato specifikacija, ir visi skaičiai faile spausdinami, naudojant šią specifikaciją. Priešingu atveju laikoma, kad pirmas argumentas yra failo vardas, o spausdinimui naudojamas numatytasis formatas "%7.4f". Pastaba: jei norima pateikti tikrinimui pirmą failą, kurio varde yra simbolis "%" (ne itin gera praktika...), tą galima padaryti, nurodant jo reliatyvų kelią: pvz. 'vcheck ./%f' komanda apdoros failą vardu "%f" darbinėje direktorijoje. Įvesties failai vektoriaiN.dat yra nebūtini; jei jų nėra, programa turi skaityti iš savo standartinės įvesties. DUOMENŲ FORMATAI ================ Įvesties formatas: - visuose įvesties failuose: -- eilutė, kurios *pirmas simbolis* yra '#' (numerio simbolis, arba "grotelės") reiškia komentarus; tokios eilutės turi būti ignoruojamos; -- tuščios eilutės, t.y. eilutės neturinčios nei vieno simbolio, arba tik "tuščius" simbolius (angl. "whitespace", t.y. tarpo, tabuliacijos arba "\r" simbolius) turi būti tyliai ignoruojamos; -- visos kitos eilutės yra duomenų eilutės; jų formatas nurodomas žemiau. Duomenys pateikiami tokiu formatu: - failai vektoriaiN.dat arba standartinė įvestis: kiekvienoje duomenų eilutėje yra po M slankaus kablelio arba sveikų skaičių, pvz.: # Pirma failo 'vect.dat' eilutė; duomenys: 1 2 3 1 1 0 0 0 # Paskutinė failo 'vect.dat' eilutė. Kiekviena vektorių failo eilutė -- tai vieno vektoriaus koordinatės. Išvesties formatas: duomenys turi būti išvedami į standartinę išvestį tokiu pat formatu, kaip ir duomenys įvesties vektorių failuose. Pirmoji eilutė turi būti komentaras, kuriame užrašytas panaudotos programos SVN (ar kitos versijų kontrolės sistemos) Id, pvz: # Id: vformat 1 2011-09-28 07:41:19Z author Toliau turi būti pateikiami duomenys. Kiekvienoje eilutėje turi būti pateikiamas vektorius, kurio komponentės atspausdintos, naudojant pasirinktą formatą (nurodytą komandinėje eilutėje arba numatytąjį). DIAGNOSTIKA =========== Programa turi pranešti apie šias klaidas: - kuriame nors faile pateiktas skaičius neatitinka Perl skaičiaus sintaksės; - nurodyti failai neegzistuoja, negali būti atidaryti, įvyko skaitymo klaida (čia galima pasikliauti Perl 'while(<>) {...' operatoriaus diagnostika). Klaidos pranešimo formatas -- toks, kokį išveda Perl'as savo funkcijomis die() ir warn(). Pranešimuose turi būti nurodytas apdorojamo failo, kuriame rasta klaida, vardas ir klaidinga eilutė.