Advertisement
Pweebs

Untitled

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