Advertisement
Pweebs

Untitled

Nov 16th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 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. fprintf(out, "\n");
  84.  
  85. // print A - B
  86. BigInteger answer4 = diff(A, B);
  87. printBigInteger(out, answer4);
  88. fprintf(out, "\n");
  89.  
  90. // print A - A
  91. BigInteger answer5 = diff(A, A);
  92. printBigInteger(out, answer5);
  93. freeBigInteger(&answer5);
  94. fprintf(out, "\n");
  95.  
  96. // print 3A - 2B
  97. BigInteger three = stringToBigInteger("3");
  98. BigInteger two = stringToBigInteger("2");
  99. BigInteger prodA = prod(A, three);
  100. BigInteger prodB = prod(B, two);
  101. BigInteger answer6 = diff(prodA, prodB);
  102. printBigInteger(out, answer6);
  103. freeBigInteger(&three);
  104. freeBigInteger(&two);
  105. freeBigInteger(&prodA);
  106. freeBigInteger(&prodB);
  107. freeBigInteger(&answer6);
  108. fprintf(out, "\n");
  109.  
  110. // print AB
  111. BigInteger answer7 = prod(A, B);
  112. printBigInteger(out, answer7);
  113. fprintf(out, "\n");
  114.  
  115. // print A^2
  116. BigInteger answer8 = prod(A, A);
  117. printBigInteger(out, answer8);
  118. fprintf(out, "\n");
  119.  
  120. // print B^2
  121. BigInteger answer9 = prod(B, B);
  122. printBigInteger(out, answer9);
  123. fprintf(out, "\n");
  124.  
  125. // print 9A^4 + 16B^5
  126. BigInteger fourthPower1 = prod(answer8, answer8);
  127. BigInteger fourthPower2 = prod(answer9, answer9);
  128. BigInteger fifthPower = prod(fourthPower2, B);
  129. BigInteger nine = stringToBigInteger("9");
  130. BigInteger sixteen = stringToBigInteger("16");
  131. BigInteger partA = prod(fourthPower1, nine);
  132. BigInteger partB = prod(fifthPower, sixteen);
  133. BigInteger answer10 = sum(partA, partB);
  134. printBigInteger(out, answer10);
  135. freeBigInteger(&answer8);
  136. freeBigInteger(&answer9);
  137. freeBigInteger(&fourthPower1);
  138. freeBigInteger(&fourthPower2);
  139. freeBigInteger(&fifthPower);
  140. freeBigInteger(&nine);
  141. freeBigInteger(&sixteen);
  142. freeBigInteger(&partA);
  143. freeBigInteger(&partB);
  144. freeBigInteger(&answer10);
  145. fprintf(out, "\n");
  146.  
  147. // close input and output files
  148. fclose(in);
  149. fclose(out);
  150.  
  151. return(EXIT_SUCCESS);
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement