Table of Contents

13 - Konzultace k bonusovým úkolům

Cíle cvičení

  1. Seznámit se jak vytvářet dynamickou knihovnou a využívat ji ve složitějších projektech.
  2. Konzultovat možnosti řešení bonusových úloh HW 04 a HW 06.

Zadání

Začneme s kódy projektu calc prp-lab13-calc.zip.

Vytváříme binární kalkulačku, která dokáže sčítat, odečítat, násobit a dělit čísla zadaná ve dvojkové soustavě. Jednotlivé číslo je uloženo ve struktuře.

#define NUMBER_LENGTH 50
 
typedef struct {
   bool number[NUMBER_LENGTH];
   char operator;
} number_t;

Položka number představuje vlastní číslo. Nultý bit čísla ukládáme na pozici NUMBER_LENGTH - 1, první bit na pozici NUMBER_LENGTH - 2 atd. Položka operator složí pro uložení operátoru ('+', ' -', '*', '/'), který za daným číslem případně následuje ve výrazu.

Celý výraz je uložen ve struktuře expression_t, která obsahuje pole ukazatelů na jednotlivá čísla výrazu.

typedef struct {
    number_t** numbers;
    size_t expr_size;
} expression_t;

Knihovna read_calc obsahuje implementaci funkcí pro čtení binárních čísel i celých výrazů ze zadaných řetězců. Implementovány jsou rovněž funkce pro uvolnění čísla a výrazu.

Úkoly

Sdílené knihovny

Rozhraní pro práci s binárními výrazy je předepsáno v calc.h.

Konzultace k bonusovým úkolům

Pro další práci s dynamickými knihovnami můžete využít přiložený Makefile, který můžete zobecnit dle lec10 slide 33.

Implementace realizujte ve dvojkové soustavě. Čísla do desítkové soustavy nepřevádějte!