Contains the source code from the course work throughout my undergraduate Computer Engineering degree at Brigham Young University. There is a mixture of Go, Python, C, C++, Java, VHDL, Verilog, Matlab, Bash, Assembly, etc..
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.cpp 9.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. #include <iostream>
  2. #include <cassert>
  3. #include <string>
  4. #include <sstream>
  5. #include "node.h"
  6. #include "polylist.h"
  7. #include "polyman.h"
  8. using namespace std;
  9. int main() {
  10. //node::node(const int exponent, const int coefficient, const char variable, node* next) :
  11. node n(0,0,'x',NULL);
  12. node n1(0,1,'x',NULL);
  13. node n2(1,0,'x',NULL);
  14. node n3(1,1,'x',NULL);
  15. node n4(1,'x',NULL);
  16. node n5(0,'x',NULL);
  17. node n6(1,'x',NULL);
  18. stringstream s;
  19. s << n;
  20. assert(s.str() == "");
  21. s.str("");
  22. s << n1;
  23. assert(s.str() == "1");
  24. s.str("");
  25. s << n2;
  26. assert(s.str() == "");
  27. s.str("");
  28. s << n3;
  29. assert(s.str() == "x");
  30. s.str("");
  31. string a1 = "1 x ^ 1";
  32. vector<string> v = parse_expression(a1);
  33. assert(v[0] == "1");
  34. assert(v[1] == "x");
  35. assert(v[3] == "1");
  36. assert(is_valid(v) == true);
  37. string a2 = "123 g ^ 152";
  38. v = parse_expression(a2);
  39. assert(is_valid(v) == true);
  40. string a3 = "a b c";
  41. v = parse_expression(a3);
  42. assert(is_valid(v) == false);
  43. string a4 = "";
  44. v = parse_expression(a4);
  45. assert(is_valid(v) == false);
  46. string a5 = "1 x";
  47. v = parse_expression(a5);
  48. assert(is_valid(v) == true);
  49. string a6 = "x";
  50. v = parse_expression(a6);
  51. assert(is_valid(v) == true);
  52. string a7 = "morethanonecharacter";
  53. v = parse_expression(a7);
  54. assert(is_valid(v) == false);
  55. string a8 = "$";
  56. v = parse_expression(a8);
  57. assert(is_valid(v) == false);
  58. string a9 = "1 & ^ x";
  59. v = parse_expression(a9);
  60. assert(is_valid(v) == false);
  61. string b1 = "123 g ^ %";
  62. v = parse_expression(b1);
  63. assert(is_valid(v) == false);
  64. string b2 = "1r32 g ^ 152";
  65. v = parse_expression(b2);
  66. assert(is_valid(v) == false);
  67. string b3 = "123 ^ 152";
  68. v = parse_expression(b3);
  69. assert(is_valid(v) == false);
  70. string b4 = "123 g ^";
  71. v = parse_expression(b4);
  72. assert(is_valid(v) == false);
  73. string b5 = "5 x ^ -2";
  74. v = parse_expression(b5);
  75. assert(is_valid(v) == false);
  76. polylist p;
  77. stringstream sr;
  78. p.insert("x");
  79. sr << p.printList();
  80. assert(sr.str() == "1");
  81. p.insert("2 x");
  82. sr.str("");
  83. sr << p.printList();
  84. assert(sr.str() == "3");
  85. p.insert("-5 x");
  86. sr.str("");
  87. sr << p.printList();
  88. assert(sr.str() == "-2");
  89. assert(p.size() == 1);
  90. p.insert("x ^ 1");
  91. sr.str("");
  92. sr << p.printList();
  93. assert(sr.str() == "x + -2");
  94. assert(p.size() == 2);
  95. p.insert("x ^ 4");
  96. sr.str("");
  97. sr << p.printList();
  98. assert(sr.str() == "x ^ 4 + x + -2");
  99. assert(p.size() == 3);
  100. p.insert("x ^ 5");
  101. sr.str("");
  102. sr << p.printList();
  103. assert(sr.str() == "x ^ 5 + x ^ 4 + x + -2");
  104. p.insert("x ^ -1");
  105. sr.str("");
  106. sr << p.printList();
  107. assert(sr.str() == "x ^ 5 + x ^ 4 + x + -2");
  108. p.insert("x ^ 4");
  109. sr.str("");
  110. sr << p.printList();
  111. assert(sr.str() == "x ^ 5 + 2 x ^ 4 + x + -2");
  112. p.insert("x ^ 4");
  113. sr.str("");
  114. sr << p.printList();
  115. assert(sr.str() == "x ^ 5 + 3 x ^ 4 + x + -2");
  116. p.insert("x ^ 4");
  117. sr.str("");
  118. sr << p.printList();
  119. assert(sr.str() == "x ^ 5 + 4 x ^ 4 + x + -2");
  120. p.insert("x ^ 5");
  121. sr.str("");
  122. sr << p.printList();
  123. assert(sr.str() == "2 x ^ 5 + 4 x ^ 4 + x + -2");
  124. assert(p.size() == 4);
  125. p.insert("x ^ 1");
  126. sr.str("");
  127. sr << p.printList();
  128. assert(sr.str() == "2 x ^ 5 + 4 x ^ 4 + 2 x + -2");
  129. p.insert("x");
  130. sr.str("");
  131. sr << p.printList();
  132. assert(sr.str() == "2 x ^ 5 + 4 x ^ 4 + 2 x + -1");
  133. p.insert("x ^ 7");
  134. sr.str("");
  135. sr << p.printList();
  136. assert(sr.str() == "x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 2 x + -1");
  137. p.insert("x ^ -7");
  138. sr.str("");
  139. sr << p.printList();
  140. assert(sr.str() == "x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 2 x + -1");
  141. p.insert("x ^ 7");
  142. sr.str("");
  143. sr << p.printList();
  144. assert(sr.str() == "2 x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 2 x + -1");
  145. assert(p.size() == 5);
  146. p.insert("2 x ^ 3");
  147. sr.str("");
  148. sr << p.printList();
  149. assert(sr.str() == "2 x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 2 x ^ 3 + 2 x + -1");
  150. p.insert("2 x ^ 3");
  151. sr.str("");
  152. sr << p.printList();
  153. assert(sr.str() == "2 x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 4 x ^ 3 + 2 x + -1");
  154. p.insert("2 x ^ 2");
  155. sr.str("");
  156. sr << p.printList();
  157. assert(sr.str() == "2 x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 4 x ^ 3 + 2 x ^ 2 + 2 x + -1");
  158. p.insert("2 x ^ 7");
  159. sr.str("");
  160. sr << p.printList();
  161. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 4 x ^ 3 + 2 x ^ 2 + 2 x + -1");
  162. p.insert("2 x ^ 0");
  163. sr.str("");
  164. sr << p.printList();
  165. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 4 x ^ 4 + 4 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  166. p.insert("-4 x ^ 4");
  167. sr.str("");
  168. sr << p.printList();
  169. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 4 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  170. p.insert("2 x ^ 3");
  171. sr.str("");
  172. sr << p.printList();
  173. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  174. p.insert("8 x ^ 4");
  175. sr.str("");
  176. sr << p.printList();
  177. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  178. p.insert("2 x ^ -3");
  179. sr.str("");
  180. sr << p.printList();
  181. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  182. p.insert("-1 x ^ 3");
  183. sr.str("");
  184. sr << p.printList();
  185. assert(sr.str() == "4 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  186. p.insert("-2 x ^ 7");
  187. sr.str("");
  188. sr << p.printList();
  189. assert(sr.str() == "2 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  190. p.insert("2 x ^ 9");
  191. sr.str("");
  192. sr << p.printList();
  193. assert(sr.str() == "2 x ^ 9 + 2 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  194. p.insert("-2 x ^ 9");
  195. sr.str("");
  196. sr << p.printList();
  197. assert(sr.str() == "2 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  198. p.insert("10 x ^ 7");
  199. sr.str("");
  200. sr << p.printList();
  201. assert(sr.str() == "12 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 1");
  202. p.insert("x");
  203. sr.str("");
  204. sr << p.printList();
  205. assert(sr.str() == "12 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  206. p.insert("x ^ 7");
  207. sr.str("");
  208. sr << p.printList();
  209. assert(sr.str() == "13 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  210. p.insert("-10 x ^ 7");
  211. sr.str("");
  212. sr << p.printList();
  213. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  214. p.insert("10 x");
  215. sr.str("");
  216. sr << p.printList();
  217. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 12");
  218. p.insert("-10 x");
  219. sr.str("");
  220. sr << p.printList();
  221. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  222. p.insert("-2 x");
  223. sr.str("");
  224. sr << p.printList();
  225. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x");
  226. p.insert("2 x ^ 0");
  227. sr.str("");
  228. sr << p.printList();
  229. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 5 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  230. p.insert("x ^ 3");
  231. sr.str("");
  232. sr << p.printList();
  233. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  234. p.insert("");
  235. sr.str("");
  236. sr << p.printList();
  237. assert(sr.str() == "3 x ^ 7 + 2 x ^ 5 + 8 x ^ 4 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  238. p.insert("-3 x ^ 7");
  239. sr.str("");
  240. sr << p.printList();
  241. assert(sr.str() == "2 x ^ 5 + 8 x ^ 4 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  242. p.insert("-2 x ^ 5");
  243. sr.str("");
  244. sr << p.printList();
  245. assert(sr.str() == "8 x ^ 4 + 6 x ^ 3 + 2 x ^ 2 + 2 x + 2");
  246. p.insert("-2 x ^ 2");
  247. sr.str("");
  248. sr << p.printList();
  249. assert(sr.str() == "8 x ^ 4 + 6 x ^ 3 + 2 x + 2");
  250. p.insert("-3 x ^ 7");
  251. sr.str("");
  252. sr << p.printList();
  253. assert(sr.str() == "-3 x ^ 7 + 8 x ^ 4 + 6 x ^ 3 + 2 x + 2");
  254. p.insert("-3 x ^ 7");
  255. sr.str("");
  256. sr << p.printList();
  257. assert(sr.str() == "-6 x ^ 7 + 8 x ^ 4 + 6 x ^ 3 + 2 x + 2");
  258. p.insert("9 x ^ 7");
  259. sr.str("");
  260. sr << p.printList();
  261. assert(sr.str() == "3 x ^ 7 + 8 x ^ 4 + 6 x ^ 3 + 2 x + 2");
  262. p.clear();
  263. sr.str("");
  264. sr << p.printList();
  265. assert(sr.str() == "");
  266. assert(p.size() == 0);
  267. p.insert("9 x ^ 7");
  268. sr.str("");
  269. sr << p.printList();
  270. assert(sr.str() == "9 x ^ 7");
  271. assert(p.size() == 1);
  272. p.clear();
  273. sr.str("");
  274. sr << p.printList();
  275. assert(sr.str() == "");
  276. assert(p.size() == 0);
  277. p.insert("x ^ 7");
  278. sr.str("");
  279. sr << p.printList();
  280. assert(sr.str() == "x ^ 7");
  281. p.insert("-x ^ 7");
  282. sr.str("");
  283. sr << p.printList();
  284. assert(sr.str() == "");
  285. p.clear();
  286. sr.str("");
  287. sr << p.printList();
  288. assert(sr.str() == "");
  289. assert(p.size() == 0);
  290. p.insert("2 x");
  291. sr.str("");
  292. sr << p.printList();
  293. assert(sr.str() == "2");
  294. p.clear();
  295. sr.str("");
  296. sr << p.printList();
  297. assert(sr.str() == "");
  298. assert(p.size() == 0);
  299. p.insert("x");
  300. sr.str("");
  301. sr << p.printList();
  302. assert(sr.str() == "1");
  303. p.remove(0);
  304. sr.str("");
  305. sr << p.printList();
  306. assert(sr.str() == "");
  307. p.insert("-x");
  308. sr.str("");
  309. sr << p.printList();
  310. assert(sr.str() == "-1");
  311. p.insert("2 x");
  312. sr.str("");
  313. sr << p.printList();
  314. assert(sr.str() == "1");
  315. node n7(3, -1, 'x',NULL);
  316. polyman m;
  317. m.addLists();
  318. m.subtractLists();
  319. m.fillListOne("x");
  320. m.fillListOne("2 x");
  321. m.fillListOne("3 x ^ 3");
  322. m.fillListOne("4aqkjx");
  323. m.fillListOne("-4 x ^ 323");
  324. m.fillListOne("-2 x ^ 400");
  325. m.fillListOne("x");
  326. m.fillListOne("x");
  327. m.fillListOne("x");
  328. m.fillListOne("x");
  329. m.fillListTwo("-6 x");
  330. m.fillListTwo("-4 x ^ 323");
  331. m.fillListTwo("-x ^ 3");
  332. m.fillListTwo("7 x ^ 8");
  333. m.fillListTwo("4 x ^ 3");
  334. m.fillListTwo("-x");
  335. m.fillListTwo("14 x");
  336. m.addLists();
  337. m.subtractLists();
  338. }