Języki i Paradygmaty Programowania 1, laboratorium 12, zadanie 03

Transkrypt

Języki i Paradygmaty Programowania 1, laboratorium 12, zadanie 03
Języki i Paradygmaty Programowania 1, laboratorium 12, zadanie 03
[!!] Poniższe zadania powinny zostać napisane w języku C++
Zadanie 1 (na 3.0). Napisz klasę Parser umożliwiającą podzielenie tekstu na fragmenty oddzielone
ustalonym przez użytkownika znakiem, wykonywanie operacji na tych fragmentach, oraz
zwrócenie tekstu po modyfikacjach.
Klasa ta powinna posiadać:
• konstruktor przyjmujący jako argument znak przy pomocy którego dzielony będzie tekst.
• metodę set przyjmującą jako argument tekst do podzielenia na fragmenty.
• metodę getText zwracającą przechowywany tekst (fragmenty połączone w całość).
• metodę size zwracającą liczbę na ile fragmentów podzielono tekst.
• metodę get przyjmującą jako argument liczbę całkowitą, zwracającą element o podanym
indeksie.
• metodę toInt przyjmującą jako argument liczbę całkowitą, zwracającą element o podanym
indeksie przekonwertowany na liczbę całkowitą (przykładowo, toInt(4) zwróci liczbę 1),
• metodę remove przyjmującą jako argument liczbę całkowitą, kasującą z tekstu element o
podanym indeksie (przykładowo remove(4) spowoduje usunięcie z tekstu fragmentu „1”, a
wywołanie print() zwróci tekst „pchnąć w tę łódź jeża”) .
Zaprezentuj działanie parsera:
1. podziel tekst „Na jabloni rosly 23
zielone jablka” po spacjach,
2. wypisz cały tekst i liczbę fragmentów,
3. wypisz każdy fragment tekstu,
4. wypisz liczbę jabłek pomniejszoną o 1,
5. usuń jeden z elementów,
6. wypisz cały tekst i liczbę fragmentów.
Przykładowy wynik działania programu:
Zadanie 2 (na 4.0). Do klasy Parser z zadania 1. dodaj metody:
• insert przyjmującą jako argument numer fragmentu oraz tekst, wstawiającą podany tekst
przed fragmentem o podanym indeksie (insert(0, „bla”) wstawi „bla” na początku tekstu.
• replace przyjmującą jako argument numer fragmentu oraz tekst, zastępującą podany
fragment przesłanym tekstem (dla tekstu „bla bla bla”, replace(2, „ble”) zamieni trzecie
„bla” na „ble”).
Zaprezentuj działanie powyższych funkcji:
1. podziel tekst „Na jabloni rosly jablka” po spacjach,
2. wstaw tekst „wielkie, soczyste” przed „jablka”,
3. zamień fragment „jabloni” na „wierzbie” oraz „jablka” na „gruszki”,
4. wypisz cały tekst po modyfikacjach.
Zadanie 3 (na 5.0). Do klasy Parser z zadania 1. dodaj możliwość podzielenia tekstu przy pomocy
kilku znaków jednocześnie:
Pobierz plik „dane.csv” ze strony prowadzącego. W każdej linii pliku jest 5 wartości oddzielonych
kropką, przecinkiem, średnikiem lub dwukropkiem.
Pierwszą wartością w każdej linii jest liczba od 1 do 4 włącznie. Dla każdej linii odczytaj pierwszą
wartość i wypisz na ekran element o takim indeksie. Przykładowo, dla pliku z zawartością:
1.dawno ,dwa,trzy:cztery,
3,ząb,zupa;dawno,smerfy.
2:dwa:temu :dwa:dwa,
Wypisany powinien zostać tekst „dawno dawno temu”.
Wykorzystaj dwa obiekty klasy Parser, jeden do podzielenia pliku na linie (przy pomocy „\n” i „\r”,
oraz drugi do podzielenia linii na elementy.