Search
Začneme s kódy projektu calc prp-lab12-calc.zip.
calc
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.
number
NUMBER_LENGTH - 1
NUMBER_LENGTH - 2
operator
Celý výraz je uložen ve struktuře expression_t, která obsahuje pole ukazatelů na jednotlivá čísla výrazu.
expression_t
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.
read_calc
read_calc.c
main.c
Rozhraní pro práci s binárními výrazy je předepsáno v calc.h.
calc.h
print_number
number_t
calc.c
ldd
Pro další práci s dynamickými knihovnami můžete využít přiložený Makefile, který můžete zobecnit dle lec10 slide 33.
Makefile
is_equal