Advertisement
Pweebs

Untitled

Nov 13th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. // Jevin Olano
  2. // jolano
  3. // CSE 101
  4. // November 9, 2019
  5. // Arithmetic.c
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include "List.h"
  10. #include "BigInteger.h"
  11.  
  12. // helper
  13. void readBigInteger(FILE* in, char *dest, int size) {
  14. int i;
  15. for (i = 0; i < size; i++) {
  16. dest[i] = fgetc(in);
  17. }
  18. dest[size] = '\0';
  19. printf("%s\n", dest);
  20. }
  21.  
  22. int main(int argc, char* argv[]) {
  23.  
  24. // Declarations -------------------------------------
  25.  
  26. FILE *in, *out; // handlers for input/output files
  27. char line[256];
  28. char stringA[256];
  29. char stringB[256];
  30. int size = 0;
  31.  
  32. // Preliminary --------------------------------------
  33.  
  34. // check command line for correct number of arguments
  35. if (argc != 3) {
  36. printf("Usage: %s <input> <output>\n", argv[0]);
  37. exit(1);
  38. }
  39.  
  40. // open input file for reading
  41. in = fopen(argv[1], "r");
  42. if (in == NULL) {
  43. printf("Unable to read from file %s\n", argv[1]);
  44. exit(1);
  45. }
  46.  
  47. // open output file for writing
  48. out = fopen(argv[2], "w");
  49. if (out == NULL) {
  50. printf("Unable to write to file %s\n", argv[2]);
  51. exit(1);
  52. }
  53.  
  54. // Arithmetic Operations ----------------------------
  55.  
  56. fgets(line, sizeof(line), in); // 1st and 2nd line of input
  57. sscanf(line, "%d", &size);
  58. printf("Size of string A: %d\n", size);
  59. readBigInteger(in, stringA, size);
  60.  
  61. fgets(line, sizeof(line), in); // 3rd and 4th line of input
  62. sscanf(line, "%d", &size);
  63. printf("Size of string B: %d\n", size);
  64. readBigInteger(in, stringB, size);
  65.  
  66. BigInteger A = stringToBigInteger(stringA);
  67. printBigInteger(stdout, A);
  68. printf("Successfully assigned BigInteger A\n");
  69. BigInteger B = stringToBigInteger(stringB);
  70. printBigInteger(stdout, B);
  71. printf("Successfully assigned BigInteger B\n");
  72.  
  73. // print A
  74. BigInteger answer1 = A;
  75. printf("assigned answer1\n");
  76. printBigInteger(out, answer1);
  77. freeBigInteger(&answer1);
  78. printf("freed answer1\n");
  79. fprintf(out, "\n");
  80.  
  81. // print B
  82. BigInteger answer2 = B;
  83. printf("assigned answer2\n");
  84. printBigInteger(out, answer2);
  85. freeBigInteger(&answer2);
  86. printf("freed answer2\n");
  87. fprintf(out, "\n");
  88.  
  89. // print A + B
  90. BigInteger answer3 = sum(A, B);
  91. printf("assigned answer3\n");
  92. printBigInteger(out, answer3);
  93. //free(&answer3);
  94. printf("freed answer3 (commented out)\n");
  95. fprintf(out, "\n");
  96.  
  97. // print A - B
  98. BigInteger answer4 = diff(A, B);
  99. printf("assigned answer4\n");
  100. printBigInteger(out, answer4);
  101. //free(&answer4);
  102. printf("freed answer4 (commented out)\n");
  103. fprintf(out, "\n");
  104.  
  105. // print A - A
  106. BigInteger answer5 = diff(A, A);
  107. printf("assigned answer5\n");
  108. printBigInteger(out, answer5);
  109. freeBigInteger(&answer5);
  110. printf("freed answer5\n");
  111. fprintf(out, "\n");
  112.  
  113. // print 3A - 2B
  114. BigInteger three = stringToBigInteger("3");
  115. printf("assigned three\n");
  116. BigInteger two = stringToBigInteger("2");
  117. printf("assigned two\n");
  118. BigInteger prodA = prod(A, three);
  119. printf("assigned prodA\n");
  120. BigInteger prodB = prod(B, two);
  121. printf("assigned prodB\n");
  122. BigInteger answer6 = diff(prodA, prodB);
  123. printf("assigned answer6\n");
  124. printBigInteger(out, answer6);
  125. freeBigInteger(&three);
  126. printf("freed three\n");
  127. freeBigInteger(&two);
  128. printf("freed two\n");
  129. freeBigInteger(&prodA);
  130. printf("freed prodA\n");
  131. freeBigInteger(&prodB);
  132. printf("freed prodB\n");
  133. freeBigInteger(&answer6);
  134. printf("freed answer6\n");
  135. fprintf(out, "\n");
  136.  
  137. // print AB
  138. BigInteger answer7 = prod(A, B);
  139. printf("assigned answer7\n");
  140. printBigInteger(out, answer7);
  141. //free(&answer7);
  142. printf("freed answer7 (commented out)\n");
  143. fprintf(out, "\n");
  144.  
  145. // print A^2
  146. BigInteger answer8 = prod(A, A);
  147. printf("assigned answer8\n");
  148. printBigInteger(out, answer8);
  149. printf("freed answer8\n");
  150. fprintf(out, "\n");
  151.  
  152. // print B^2
  153. BigInteger answer9 = prod(B, B);
  154. printf("assigned answer9\n");
  155. printBigInteger(out, answer9);
  156. printf("freed answer9\n");
  157. fprintf(out, "\n");
  158.  
  159. // print 9A^4 + 16B^5
  160. BigInteger fourthPower1 = prod(answer8, answer8);
  161. printf("assigned fourthPower1\n");
  162. BigInteger fourthPower2 = prod(answer9, answer9);
  163. printf("assigned fourthPower2\n");
  164. BigInteger fifthPower = prod(answer9, B);
  165. printf("assigned fifthPower\n");
  166. BigInteger nine = stringToBigInteger("9");
  167. printf("assigned nine\n");
  168. BigInteger sixteen = stringToBigInteger("16");
  169. printf("assigned sixteen\n");
  170. BigInteger partA = prod(fourthPower1, nine);
  171. printf("assigned partA\n");
  172. BigInteger partB = prod(fifthPower, sixteen);
  173. printf("assigned partB\n");
  174. BigInteger answer10 = sum(partA, partB);
  175. printf("assigned answer10\n");
  176. printBigInteger(out, answer10);
  177. freeBigInteger(&answer8);
  178. printf("freed answer8\n");
  179. freeBigInteger(&answer9);
  180. printf("freed answer9\n");
  181. freeBigInteger(&fourthPower1);
  182. printf("freed fourthPower1\n");
  183. freeBigInteger(&fourthPower2);
  184. printf("freed fourthPower2\n");
  185. freeBigInteger(&fifthPower);
  186. printf("freed fifthPower\n");
  187. freeBigInteger(&nine);
  188. printf("freed nine\n");
  189. freeBigInteger(&sixteen);
  190. printf("freed sixteen\n");
  191. freeBigInteger(&partA);
  192. printf("freed partA\n");
  193. freeBigInteger(&partB);
  194. printf("freed partB\n");
  195. freeBigInteger(&answer10);
  196. printf("freed answer10\n");
  197. fprintf(out, "\n");
  198.  
  199. return(EXIT_SUCCESS);
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement