implementing chapter 5 in c