Vektorių sudėties programa (2) ============================== PROGRAMA ======== Parašykite Perl programą, kuri suskaičiuoja duotų vektorių sumą. Programos vardas: vaddfiles Programos iškvietimas: vaddfiles vektoriai1.dat [vektoriai2.dat] Programa turi apdoroti vieną arba du įvesties failus. Pirmasis įvesties failas vektoriai1.dat yra būtinas; jei pirmąjį failą norime skaityti iš standartinės įvesties, nurodome failo vardą "-" (vienas brūkšnelis; komandų eilutėje, be abejo, be kabučių). Failas vektoriai2.dat yra nebūtinas; jei jo nėra, programa turi skaityti iš savo standartinės įvesties. Vektorių sudėties operacija turi būti vykdoma tarp vektorių, įrašytų atitinkamose dviejų skirtingų failų (ar standartinės įvesties) duomenų eilutėse -- t.y. pirmasis vektorius iš pirmojo failo turi būti sudedamas su pirmuoju vektoriumi iš antrojo failo, antrasis vektorius iš pirmojo failo sudedamas su antruoju vektoriumi iš antrojo failo ir taip toliau. Įvesties failų duomenų eilutės formatas pateiktas skyrelyje "DUOMENŲ FORMATAI". 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: 0.25 0 0.3333 1.0 0 0 0 1 # Paskutinė failo 'vect.dat' eilutė. Kiekviena vektorių failo eilutė -- tai vektoriaus komponentės ortogonaliose koordinatėse. == Išvesties formatas == Duomenys turi būti išvedami į standartinę išvestį. Komentarai žymimi taip pat, kaip ir įvesties failuose. Pirmoji išvesties eilutė turi būti komentaras, kuriame užrašytas naudojamos versijų kontrolės sistemos (SVN ar kitos) programai suteiktas Id: # Id: vaddfiles 1 2011-09-28 07:41:19Z author Toliau pateikiami duomenys. Kiekvienoje eilutėje turi būti spausdinamas vienas vektorius -- atitinkamose duomenų eilutėse esančių vektorių suma. DIAGNOSTIKA =========== Programa turi pranešti apie šias klaidas: - nenurodytas bent vienas failo vardas; - sudauginami vektoriai turi skirtingą komponenčių skaičių; - 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ė.