Przedstawione tabelki reprezentują działanie modulo 5, z tą różnicą, że jest ono wykonywane na symbolach.
Działanie "+"
e a b c d
e e a b c d
a a d e b c
b b e c d a
c c b d a e
d d c a e b
Działanie "*"
e a b c d
e e e e e e
a e d c a b
b e c d b a
c e a b c d
d e b a d c
Tak wygląda to co zrobilem do tej pory:
enum Symbol {a,b,c,d,e};
Symbol TabliczkaDodawania[5][5]={{e,a,b,c,d},{a,d,e,b,c},{b,e,c,d,a},{c,b,d,a,e},{d,c,a,e,b}};
Symbol TabliczkaMnozenia[5][5]={{e,e,e,e,e},{e,d,c,a,b},{e,c,d,b,a},{e,a,b,c,d},{e,b,a,d,c}};
Symbol Dodaj(Symbol x, Symbol y)
{
return TabliczkaDodawania[x][y];
}
Symbol Mnoz(Symbol x, Symbol y)
{
return TabliczkaMnozenia[x][y];
}
Teraz chcę zdefiniować operację odejmowania jako operację dodawania pierwszego argumentu i wartości odwrotnej do drugiego argumenty. Wiem, że wartości odwrotne można wyznaczyć na podstawie wcześniej podanej tabelki dodawania. Analogicznie można postąpić z implementacją operacji dzielenia. Mógłby ktoś podać przykładową implementację?