Advertisement
Pweebs

Untitled

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