Compare commits

..

No commits in common. "0c7c564e3de17f3ddc20f4cc91a6822dcd75f46f" and "1edb0fa0ec36025debbaa97445262955f5885444" have entirely different histories.

5 changed files with 11 additions and 25 deletions

2
.vscode/tasks.json vendored
View file

@ -12,7 +12,7 @@
"${workspaceFolder}\\build\\build.exe" "${workspaceFolder}\\build\\build.exe"
], ],
"options": { "options": {
"cwd": "${workspaceFolder}\\build\\" "cwd": "${fileDirname}"
}, },
"problemMatcher": [ "problemMatcher": [
"$gcc" "$gcc"

View file

@ -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, `.`)

View file

@ -145,11 +145,12 @@ void correctNegativeSign(parseResult* _input) {
for (auto it = parsed->begin(); it != parsed->end(); it++) { for (auto it = parsed->begin(); it != parsed->end(); it++) {
auto jt = it + 1; //next element auto jt = it + 1; //next element
if (it->type == SymbolType::subract && jt != parsed->end() && jt->type == SymbolType::number) { if (it->type == SymbolType::subract && jt != parsed->end() && jt->type == SymbolType::number) {
it->type = SymbolType::add; it = parsed->erase(it);
jt->value = jt->value * (-1); it->value = it->value * (-1);
continue; continue;
} }
} }
parsed->shrink_to_fit();
} }
/** /**
@ -161,8 +162,6 @@ void correctNegativeSign(parseResult* _input) {
*/ */
bool validateParsation(const std::vector<Symbol>* _input) { bool validateParsation(const std::vector<Symbol>* _input) {
return true; return true;
// FIXME: It's broken somewhere
if (_input->size() == 0) return false; if (_input->size() == 0) return false;
for (auto it = _input->begin(); true /* Break argument 2 lines down */; it++) { for (auto it = _input->begin(); true /* Break argument 2 lines down */; it++) {
auto jt = it + 1; auto jt = it + 1;
@ -312,8 +311,11 @@ Symbol calculateUsingStack(std::vector<Symbol>& _stack) {
return toPut; return toPut;
} break; } break;
case SymbolType::subract: { case SymbolType::subract: {
//subtract is unnecessary because it's already converted to addition in previous step. Stack::take<Symbol>(_stack); //top symbol...
throw "impossible"; Symbol toPut;
toPut.value = calculateUsingStack(_stack).value - calculateUsingStack(_stack).value;
Stack::put<Symbol>(_stack, toPut);
return toPut;
} break; } break;
case SymbolType::multiply: { case SymbolType::multiply: {
Stack::take<Symbol>(_stack); //top symbol... Stack::take<Symbol>(_stack); //top symbol...

View file

@ -139,7 +139,7 @@ int main() {
terminal::key_right(keys); terminal::key_right(keys);
break; break;
default: default:
// debugKey(input, debugOffset); debugKey(input, debugOffset);
break; break;
} }
continue; continue;
@ -176,7 +176,7 @@ int main() {
exit |= commands::loop(); exit |= commands::loop();
break; break;
default: default:
// debugKey(input, debugOffset); debugKey(input, debugOffset);
break; break;
}; };
} }

View file

@ -28,7 +28,6 @@ Poziom dokumentacji: 3 stopniowa (wymagania, instrukcja z zrzutami ekranu, kod p
Format instrukcji: A4 Format instrukcji: A4
Format zapisu instrukcji: PDF Format zapisu instrukcji: PDF
Format pliku do upload'u: ZIP (bez hasła) Format pliku do upload'u: ZIP (bez hasła)
Nazwa pliku zip: R1IS_Prog.CPP_projekt_<nazwisko><imie>.zip
Czcionka kodu programu: KONSOLOWA Czcionka kodu programu: KONSOLOWA
Wymagana wersja źródłowa kodu: TAK Wymagana wersja źródłowa kodu: TAK
Wymagana wersja wykonywalna kodu: TAK Wymagana wersja wykonywalna kodu: TAK