Prihlásenie Registrácia  

C - CSV

Časový limit: 2s, Pamäťový limit: 64MiB

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3

Počet bodov: 1

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

CSV (Comma-Separated Values) je formát, ktorý nám umožňuje uložiť ľubovoľnú tabuľku do obyčajného textového súboru. Hoci, ako iste viete, comma po anglicky znamená čiarka, niektoré programy používajú ako oddeľovač aj kadejaké iné znaky. Istý populárny tabuľkový kalkulátor napríklad používa ako oddeľovač vždy bodkočiarku.

Vašou úlohou bude vytvoriť konvertovací program, ktorý nám umožní otvoriť CSV súbor vytvorený niektorým programom aj v programoch, ktoré používajú rôzne iné oddeľovače.

Každý súbor formátu CSV musí spĺňať nasledujúce podmienky:

  1. Každý záznam sa nachádza na samostatnom riadku, ukončenom znakom konca riadku.
  2. Záznam pozostáva z jedného alebo viacerých polí, ktoré sú od seba oddelené čiarkou (resp. iným oddeľovacím znakom, ktorý je pre celý súbor rovnaký). Za posledným poľom záznamu nesmie nasledovať oddeľovací znak.
  3. Hodnota v každom poli môže, ale nemusí byť uzavretá v úvodzovkách ("). Hodnota, ktorá nie je uzavretá v úvodzovkách, nesmie obsahovať znak ".
  4. Polia obsahujúce znak konca riadku, úvodzovky alebo oddeľovací znak musia byť uzavreté v úvodzovkách.
  5. Ak je hodnota poľa uzavretá v úvodzovkách, potom každý znak ", ktorý je súčasťou tejto hodnoty, musí byť zdvojený.

Vstup:

Prvý riadok vstupu bude obsahovať ničím neoddelené dva znaky c1 a c2. ASCII kód obidvoch znakov bude z rozsahu 35…126, teda ani jeden z nich nebude medzera ani úvodzovky. Znak c1 udáva oddeľovač polí vstupného CSV súboru, znak c2 oddeľovač polí, ktorý má byť použitý vo výstupnom súbore.

Na druhom riadku je jedno kladné celé číslo N (N≤1000) určujúce počet záznamov vstupného súboru. Zvyšok vstupu obsahuje postupne N záznamov, v ktorých treba zmeniť oddeľovací znak. Žiadny záznam nebude dlhší ako 1000 znakov. Môžete tiež predpokladať, že vstupný súbor spĺňa všetky podmienky zo zadania a že v celom súbore sa ako oddeľovač používa znak c1.

Výstup:

Výstupom má byť CSV súbor obsahujúci všetky záznamy zo vstupného súboru, s oddeľovacím znakom zmeneným na c2. V prípade, že existuje viacero takýchto súborov spĺňajúcich všetky uvedené podmienky, vypíšte ten, ktorý je z nich najkratší.

Príklad

Vstup:

,;
3
aaa,bbb,ccc;ccc,ddd
eee,"fff,fff",ggg,"hhh
hhh"
iii,jjj jjj,kkk,"lll""lll"

Výstup:

aaa;bbb;"ccc;ccc";ddd
eee;fff,fff;ggg;"hhh
hhh"
iii;jjj jjj;kkk;"lll""lll"