Programozó versenyek

Magas szintű programozási nyelvek 2, 2016. január 5., K14 ZH

2016. január 5. 14:05 – 2016. január 5. 17:35

Szövegszerkesztő program

Írjon egy programot, amely egy egyszerű szövegszerkesztőt valósít meg!

A programnak egy legfeljebb 80 karakter hosszúságú, kizárólag az angol ábécé kis- és nagybetűit, valamint számjegy karaktereket tartalmazó sztringet kell tudnia kezelni. Ezt a sztringet tetszőleges pozíciójában kell tudnia egy másik sztringgel bővíteni, és tetszőleges pozíciójától kezdve kell tudnia belőle részsztringet törölni. A szövegszerkesztőt kötött formátumú parancsokkal tudja vezérelni:

insert n str
delete n m

Az insert paranccsal az aktuális sztring n-edik indexű helyétől kezdve tudja beszúrni az str (nem üres) sztringet. A parancs nem alkalmazható, ha (1) n értéke érvénytelen, azaz negatív vagy az aktuális sztring hosszánál nagyobb, vagy (2) az aktuális sztring és az str sztring együttes hossza meghaladja a 80 karaktert.

A delete paranccsal az aktuális sztring n-edik indexű elemétől kezdve tud m darab karaktert törölni. A parancs nem alkalmazható, ha (1) n értéke érvénytelen, azaz negatív vagy az aktuális sztring hosszánál nagyobb, vagy (2) m értéke érvénytelen, azaz nem pozitív vagy az aktuális sztring n-edik indexű elemétől kezdve nincsen már m darab törölhető karakter.

A programjának a standard bemenet legfeljebb 200 karakter hosszúságú sorait kell feldolgoznia. A bemenet első sorában egy legfeljebb 80 karakter hosszúságú sztring áll, ez a kiinduló sztring, ezt kell a továbbiakban kezelnie a programjának. A bemenet további sorai a fenti két parancs egyikét tartalmazzák szintaktikailag helyes formában: n és m egész számok, str pedig egy (nem üres) sztring, amely csak az angol ábécé kis- és nagybetűiből, valamint számjegy karakterekből állhat. Az adatokat egy soron belül szóköz karakterek választják el egymástól.

A programja írja a standard kimenetre a kiinduló sztringet, valamint mindazoknak a parancsoknak az eredményeit, amelyeket alkalmazni tudott, soronként egy-egy sztringet írva a kimenetre! Azokra a parancsokra, amelyeket nem tudott alkalmazni, ne írjon semmit a kimenetre!

Példa bemenet

  1. ABCDEFGHIJKLMNOPQRSTUVWXYZ
  2. insert 26 abcdefghijklmnopqrstuvwxyz
  3. insert -1 ABC
  4. insert 0 0123456789
  5. insert 0 ABCDEFGHIJKLMNOPQRSTUVWXYZ
  6. delete 10 5
  7. delete 60 10
  8. delete 10 0
  9. delete 0 31
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. ABCDEFGHIJKLMNOPQRSTUVWXYZ
  2. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  3. 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  4. 0123456789FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  5. abcdefghijklmnopqrstuvwxyz
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.