# $Author: saulius $ # $Revision: 9750 $ # $Date: 2022-02-08 06:24:00 +0000 (Tue, 08 Feb 2022) $ Vektorių failų tikrinimo programa ================================= PROGRAMA ======== Parašykite Perl programą, kuri patikrina, ar failo turinys atitinka nustatytą vektorių failų formatą. Programos vardas: vcheck Programos iškvietimas: vcheck vektoriai1.dat [vektoriai2.dat ...] Į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: # Id: vcheck 1 2011-09-28 07:41:19Z author Toliau turi būti pateikiami duomenys. Kiekvienoje eilutėje turi būti pateikiamas vektorius, kuris atitiko patikrinimus. Jei vektorius neatitinka patikrinimo, ta eilutė pateikiama taip, kaip buvo parašyta pradiniame faile, prieš tai pridėjus komentaro ženklą "#". 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ė.