diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 893e657..69a451e 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -12,7 +12,7 @@ "${workspaceFolder}\\build\\build.exe" ], "options": { - "cwd": "${workspaceFolder}\\build\\" + "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" diff --git a/instrukcja.md b/instrukcja.md deleted file mode 100644 index 2b91e7a..0000000 --- a/instrukcja.md +++ /dev/null @@ -1,15 +0,0 @@ -Uruchom program i zacznij wpisywać dzialanie. - -Wciśnij enter aby zaakceptować wejście. - -wpisz `:h` aby uzyskać komendy w programie. - -# Wymagania -Program jest na tyle lekki że zadziała na każdym komputerze wydanym w ciągu 10 lat. - -Skompilowny program jest binarką x64, która wymaga procesora 64bit. - -Możliwa jest kompilacja z plików źródłowych, żeby działał na komputerach innej architektury. - -# Obsługiwane znaki -Obsługiwane znaki w trybie obliczania to jedyne podstawowe znaki algebraiczne, nawiasy (`+`, `-`, `*`, `/`, `(`, `)`) i cyfry z przecinkami (od 0 do 9, `.`) diff --git a/src/calculator.cpp b/src/calculator.cpp index cc435d8..c7cda3c 100644 --- a/src/calculator.cpp +++ b/src/calculator.cpp @@ -145,11 +145,12 @@ void correctNegativeSign(parseResult* _input) { for (auto it = parsed->begin(); it != parsed->end(); it++) { auto jt = it + 1; //next element if (it->type == SymbolType::subract && jt != parsed->end() && jt->type == SymbolType::number) { - it->type = SymbolType::add; - jt->value = jt->value * (-1); + it = parsed->erase(it); + it->value = it->value * (-1); continue; } } + parsed->shrink_to_fit(); } /** @@ -161,8 +162,6 @@ void correctNegativeSign(parseResult* _input) { */ bool validateParsation(const std::vector* _input) { return true; - - // FIXME: It's broken somewhere if (_input->size() == 0) return false; for (auto it = _input->begin(); true /* Break argument 2 lines down */; it++) { auto jt = it + 1; @@ -312,8 +311,11 @@ Symbol calculateUsingStack(std::vector& _stack) { return toPut; } break; case SymbolType::subract: { - //subtract is unnecessary because it's already converted to addition in previous step. - throw "impossible"; + Stack::take(_stack); //top symbol... + Symbol toPut; + toPut.value = calculateUsingStack(_stack).value - calculateUsingStack(_stack).value; + Stack::put(_stack, toPut); + return toPut; } break; case SymbolType::multiply: { Stack::take(_stack); //top symbol... diff --git a/src/main.cpp b/src/main.cpp index ca17c19..19be4e4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -139,7 +139,7 @@ int main() { terminal::key_right(keys); break; default: - // debugKey(input, debugOffset); + debugKey(input, debugOffset); break; } continue; @@ -176,7 +176,7 @@ int main() { exit |= commands::loop(); break; default: - // debugKey(input, debugOffset); + debugKey(input, debugOffset); break; }; } diff --git a/zadanie.txt b/zadanie.txt index 7004a2f..15b585a 100644 --- a/zadanie.txt +++ b/zadanie.txt @@ -28,7 +28,6 @@ Poziom dokumentacji: 3 stopniowa (wymagania, instrukcja z zrzutami ekranu, kod p Format instrukcji: A4 Format zapisu instrukcji: PDF Format pliku do upload'u: ZIP (bez hasła) -Nazwa pliku zip: R1IS_Prog.CPP_projekt_.zip Czcionka kodu programu: KONSOLOWA Wymagana wersja źródłowa kodu: TAK Wymagana wersja wykonywalna kodu: TAK