Compare commits

...

2 commits

Author SHA1 Message Date
0c7c564e3d add instrukcja.md 2022-05-25 11:09:19 +02:00
2a83456d27 code fixes
fix negative signs
disable debug info
add requirement in zadanie.txt
2022-05-25 11:08:55 +02:00
5 changed files with 25 additions and 11 deletions

2
.vscode/tasks.json vendored
View file

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

15
instrukcja.md Normal file
View file

@ -0,0 +1,15 @@
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,12 +145,11 @@ 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 = parsed->erase(it);
it->value = it->value * (-1);
it->type = SymbolType::add;
jt->value = jt->value * (-1);
continue;
}
}
parsed->shrink_to_fit();
}
/**
@ -162,6 +161,8 @@ 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;
@ -311,11 +312,8 @@ Symbol calculateUsingStack(std::vector<Symbol>& _stack) {
return toPut;
} break;
case SymbolType::subract: {
Stack::take<Symbol>(_stack); //top symbol...
Symbol toPut;
toPut.value = calculateUsingStack(_stack).value - calculateUsingStack(_stack).value;
Stack::put<Symbol>(_stack, toPut);
return toPut;
//subtract is unnecessary because it's already converted to addition in previous step.
throw "impossible";
} 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,6 +28,7 @@ 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