usaa25/sk2
2026-01-25 15:26:05 +01:00
..
calculator funguje 2026-01-25 15:26:05 +01:00
calculator.c funguje 2026-01-25 15:26:05 +01:00
calculator.h funguje 2026-01-25 15:26:05 +01:00
calculator.o funguje 2026-01-25 15:26:05 +01:00
main.c funguje 2026-01-25 15:26:05 +01:00
main.o funguje 2026-01-25 15:26:05 +01:00
Makefile funguje 2026-01-25 15:26:05 +01:00
README.md funguje 2026-01-25 15:26:05 +01:00

Vedecká kalkulačka

Zadanie

Naprogramujte vedeckú kalkulačku, ktorá vyhodnocuje matematické výrazy v infixovej notácii s podporou základných operácií a matematických funkcií.

Požiadavky

  • Načítanie a práca s číslami s presnosťou minimálne 2 desatinné miesta
  • Podpora základných operácií: sčítanie (+), odčítanie (-), násobenie (*), delenie (/), zátvorky
  • Podpora matematických funkcií: sinus (sin), kosínus (cos), druhá odmocnina (sqrt), druhá mocnina (^), dekadický logaritmus (log)

Funkcionalita

Kalkulačka:

  1. Načíta matematický výraz z príkazového riadku
  2. Prevedie infixový zápis na postfixový (RPN)
  3. Vyhodnotí výraz pomocou zásobníkového algoritmu
  4. Vypíše výsledok s presnosťou na 2 desatinné miesta
  5. Podporuje interaktívny režim so zadaním "koniec" pre ukončenie

Opis riešenia

Riešenie využíva algoritmus shunting-yard (železničný zoraďovací algorimus) pre prevod infixovej notácie na postfixovú (RPN). Následne sa RPN výraz vyhodnotí pomocou zásobníka.

Hlavné kroky:

  1. Analýza vstupu: Lexikálna analýza vstupného reťazca
  2. Konverzia na RPN:
    • Použitie dvoch zásobníkov: jeden pre operátory/funkcie, druhý pre výstup
    • Respektovanie priorít operátorov a asociativity
    • Spracovanie matematických funkcií
  3. Vyhodnotenie RPN:
    • Zásobníkový algoritmus pre vyhodnotenie
    • Aplikácia operátorov a funkcií
  4. Výstup: Formátovanie výsledku na 2 desatinné miesta

Podporované výrazy:

  • Jednoduché aritmetické operácie: 2 + 3 * 4
  • Zátvorky: (2 + 3) * 4
  • Matematické funkcie: sin(0), cos(0), sqrt(25), log(100)
  • Mocniny: 2^3, 4^0.5
  • Komplexné výrazy: sin(0) + cos(0) * 2

Podmienky pre správne fungovanie

  1. Program vyžaduje matematickú knižnicu (libm)
  2. Vstupné výrazy musia byť matematicky korektné
  3. Zátvorky musia byť správne párové
  4. Delenie nulou spôsobí chybu
  5. Logaritmus a odmocnina zo záporného čísla spôsobí chybu

Inštalácia a spustenie

# Kompilácia
make

# Spustenie
make run
# alebo
./calculator