76 lines
2.9 KiB
Markdown
76 lines
2.9 KiB
Markdown
# Domáca skúška - Opravný termín - Kalkulačka
|
|
|
|
Naprogramuj vedeckú kalkulačku. Kalkulačka by mala vyhodnocovať aj zložitejšie výrazy v infixnej notácii.
|
|
|
|
Kalkulačka by mala podporovať tieto operácie:
|
|
|
|
- načítanie a prácu s číslami s presnosťou min. 2 desatinné miesta.
|
|
- sčítanie, odčítanie, násobenie, delenie, zátvorky.
|
|
- sinus, cosinus, odmocnina, druhá mocnina, logaritmus.
|
|
|
|
|
|
## Strucny popis funkčnosti
|
|
|
|
1. (isOperator)
|
|
Nastavenie indexu vrcholu na -1 (prázdny zásobník).
|
|
|
|
1. (precedence)
|
|
Funkcia vracia prioritu operátora.
|
|
|
|
1. (applyOperator)
|
|
Funkcia vykoná matematickú operáciu na dvoch operandoch podľa zadaného operátora.
|
|
|
|
1. Výpočet výrazu (evaluateExpression)
|
|
Hlavná funkcia programu, ktorá vyhodnocuje matematický výraz odovzdaný ako reťazec.
|
|
|
|
1. Konfigurácia operátorov a funkcií (evaluateExpression)
|
|
Funkcia prijíma konfiguračný argument, ktorý definuje podporované operátory a funkcie:
|
|
|
|
Konfigurácia 1: Podporované sú len základné aritmetické operácie.
|
|
|
|
Konfigurácia 2: Podporované sú aj ďalšie matematické funkcie (sínus, kosínus, logaritmy, odmocniny).
|
|
|
|
|
|
## Strucny popis riešenia
|
|
|
|
Tento kód je jednoduchá kalkulačka schopná počítať matematické výrazy zapísané v infixovej notácii. Podporuje základné aritmetické operácie (+, -, *, /), mocniny (^), trigonometrické funkcie (sin, cos), logaritmy (log, log10) a odmocniny (sqrt). Kód implementuje zásobník na ukladanie operandov a operátorov, ako aj funkcie na inicializáciu zásobníka, pridávanie a odstraňovanie prvkov zo zásobníka. Kód tiež rieši prípady chýb, ako je delenie nulou, záporné argumenty pre niektoré funkcie a neplatné znaky vo výraze. Používateľ môže zadať konfiguráciu na zapnutie alebo vypnutie podpory určitých operácií a funkcií.
|
|
|
|
|
|
## Podmienky za ktorých funguje
|
|
|
|
Pomocou príkazu make môžete jednoducho skompilovať všetky herné súbory, pretože súbor Makefile sa používa na proces kompilácie kódu:
|
|
|
|
```c
|
|
make
|
|
```
|
|
|
|
Ak chcete spustiť program:
|
|
|
|
```c
|
|
./calculator
|
|
```
|
|
|
|
Ak potrebujete len jednoduché operácie, ako napríklad "+, -, *, /, ^", stlačte v konfigurácii číslo 1.
|
|
|
|
Ak potrebujete vypočítať niečo zložitejšie, napríklad "sin, cos, log, log10, sqrt", vyberte možnosť 2.
|
|
|
|
Ak ste už unavení z výpočtov alebo ste len náhodne spustili kalkulačku, môžete vybrať 3 konfigurácie a ukončiť ju ;)
|
|
|
|
```c
|
|
Select configuration:
|
|
1. Simple expressions
|
|
2. Higher expressions
|
|
3. Exit
|
|
Enter your choice: 1
|
|
Enter the equation:
|
|
```
|
|
|
|
|
|
### Zoznam použitých zdrojov
|
|
|
|
Táto práca ma inšpirovala k rozdeleniu podľa konfigurácií - https://github.com/hariprasath112/scientific-calculator?tab=readme-ov-file
|
|
|
|
Unarny operator minus - https://www.scaler.com/topics/unary-operator-in-c/
|
|
|
|
Sqrt - https://www.upgrad.com/tutorials/software-engineering/c-tutorial/sqrt-in-c/#:~:text=In%20C%20programming%20the%20square,h%3E%20header%20file.
|