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"
],
"options": {
"cwd": "${workspaceFolder}\\build\\"
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$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++) {
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<Symbol>* _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<Symbol>& _stack) {
return toPut;
} break;
case SymbolType::subract: {
//subtract is unnecessary because it's already converted to addition in previous step.
throw "impossible";
Stack::take<Symbol>(_stack); //top symbol...
Symbol toPut;
toPut.value = calculateUsingStack(_stack).value - calculateUsingStack(_stack).value;
Stack::put<Symbol>(_stack, toPut);
return toPut;
} break;
case SymbolType::multiply: {
Stack::take<Symbol>(_stack); //top symbol...

View file

@ -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;
};
}

View file

@ -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_<nazwisko><imie>.zip
Czcionka kodu programu: KONSOLOWA
Wymagana wersja źródłowa kodu: TAK
Wymagana wersja wykonywalna kodu: TAK