Zadanie wykonane w ramach przedmiotu "Programowanie w Java". Szkielet aplikacji dostarczony był przez Pana Arkadiusza Sokołowskiego ( https://www.linkedin.com/in/arkadiusz-soko%C5%82owski-3a07862b/ ), prowadzącego zajęcia.
Zadanie polega na zaimplementowaniu obliczeń w prostym arkuszy kalkulacyjnym. Arkusz operuje tylko na liczbach całkowitych, w zakresie ograniczonym typem int
.
W klase uj.pwj2020.spreadsheet.Spreadsheet
Należy zaimplementować metodę calculate
tak, aby operując na źródłowym arkuszu (przekazanym w paramtrze) zwróciła arkusz wynikowy, z wykonanymi obliczeniami. Tablica wejściowa zawiera kolejno: wiersze i kolumny.
Arkusz powinien obsługiwać następujące operacje:
- wartość: jeśli komórka zawiera liczbę, należy ją po prostu zostawić.
- referencja: jeśli komórka zaczyna się od znaku
$
, zawiera referencję do innej komórki. Referencje są zbudowane podobnie jak w Excelu, np zapis:$A1
oznacza pierwszą kolumnę (A
), pierwszy wiersz (1
). Zapis$C7
oznacza trzecią kolumnę, pierwszy wiersz. - formuła: jeśli komórka zaczyna się od znaku
=
, zawiera formułę. Każda formuła składa się ze znaku=
, nazwy formuły, oraz dwóch oddzielonych przecinkiem parametrów w zwykłych nawiasach. Parametrem formuły może być tylko wartość lub referencja (ale nie inna formuła).
Istniejące formuły:
ADD
- dodawanie obu parametrów,SUB
- odejmowanie parametrów,MUL
- mnożenie parametrów,DIV
- dzielenie całkowite parametrów,MOD
- reszta z dzielenia parametrów.
Arkusz nie będzie zawierał referencji cyklicznych (np komórka A1
odwołuje się do B2
, a B2
znów do A1
).
Przykład:
Dla arkusza:
1,2,3
4,5,6
$A1,$C1,$B3
=ADD(10,$A1),=SUB($C3,$A1),0
Wynik powinien wyglądać:
1,2,3
4,5,6
1,1,6
11,5,0