Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Jevin Olano
- // jolano
- // CSE 101
- // November 9, 2019
- // Arithmetic.c
- #include <stdio.h>
- #include <stdlib.h>
- #include "List.h"
- #include "BigInteger.h"
- // helper
- void readBigInteger(FILE* in, char *dest, int size) {
- int i;
- for (i = 0; i < size; i++) {
- dest[i] = fgetc(in);
- }
- dest[i] = '\0';
- }
- int main(int argc, char* argv[]) {
- // Declarations -------------------------------------
- FILE *in, *out; // handlers for input/output files
- char line[256];
- char stringA[256];
- char stringB[256];
- int size = 0;
- // Preliminary --------------------------------------
- // check command line for correct number of arguments
- if (argc != 3) {
- printf("Usage: %s <input> <output>\n", argv[0]);
- exit(1);
- }
- // open input file for reading
- in = fopen(argv[1], "r");
- if (in == NULL) {
- printf("Unable to read from file %s\n", argv[1]);
- exit(1);
- }
- // open output file for writing
- out = fopen(argv[2], "w");
- if (out == NULL) {
- printf("Unable to write to file %s\n", argv[2]);
- exit(1);
- }
- // Arithmetic Operations ----------------------------
- fgets(line, sizeof(line), in); // 1st and 2nd line of input
- sscanf(line, "%d", &size);
- printf("Size of string A: %d\n", size);
- readBigInteger(in, stringA, size);
- fgets(line, sizeof(line), in); // 3rd and 4th line of input
- sscanf(line, "%d", &size);
- printf("Size of string B: %d\n", size);
- readBigInteger(in, stringB, size);
- BigInteger A = stringToBigInteger(stringA);
- printf("Successfully assigned BigInteger A\n");
- BigInteger B = stringToBigInteger(stringB);
- printf("Successfully assigned BigInteger B\n");
- // print A
- BigInteger answer1 = A;
- printf("assigned answer1\n");
- printBigInteger(out, answer1);
- freeBigInteger(&answer1);
- printf("freed answer1\n");
- fprintf(out, "\n");
- // print B
- BigInteger answer2 = B;
- printf("assigned answer2\n");
- printBigInteger(out, answer2);
- freeBigInteger(&answer2);
- printf("freed answer2\n");
- fprintf(out, "\n");
- // print A + B
- BigInteger answer3 = sum(A, B);
- printf("assigned answer3\n");
- printBigInteger(out, answer3);
- free(&answer3);
- printf("freed answer3\n");
- fprintf(out, "\n");
- // print A - B
- BigInteger answer4 = diff(A, B);
- printf("assigned answer4\n");
- printBigInteger(out, answer4);
- free(&answer4);
- printf("freed answer4\n");
- fprintf(out, "\n");
- // print A - A
- BigInteger answer5 = diff(A, A);
- printf("assigned answer5\n");
- printBigInteger(out, answer5);
- freeBigInteger(&answer5);
- printf("freed answer5\n");
- fprintf(out, "\n");
- // print 3A - 2B
- BigInteger three = stringToBigInteger("3");
- printf("assigned three\n");
- BigInteger two = stringToBigInteger("2");
- printf("assigned two\n");
- BigInteger prodA = prod(A, three);
- printf("assigned prodA\n");
- BigInteger prodB = prod(B, two);
- printf("assigned prodB\n");
- BigInteger answer6 = diff(prodA, prodB);
- printf("assigned answer6\n");
- printBigInteger(out, answer6);
- freeBigInteger(&three);
- printf("freed three\n");
- freeBigInteger(&two);
- printf("freed two\n");
- freeBigInteger(&prodA);
- printf("freed prodA\n");
- freeBigInteger(&prodB);
- printf("freed prodB\n");
- freeBigInteger(&answer6);
- printf("freed answer6\n");
- fprintf(out, "\n");
- // print AB
- BigInteger answer7 = prod(A, B);
- printf("assigned answer7\n");
- printBigInteger(out, answer7);
- free(&answer7);
- printf("freed answer7\n");
- fprintf(out, "\n");
- // print A^2
- BigInteger answer8 = prod(A, A);
- printf("assigned answer8\n");
- printBigInteger(out, answer8);
- printf("freed answer8\n");
- fprintf(out, "\n");
- // print B^2
- BigInteger answer9 = prod(B, B);
- printf("assigned answer9\n");
- printBigInteger(out, answer9);
- printf("freed answer9\n");
- fprintf(out, "\n");
- // print 9A^4 + 16B^5
- BigInteger fourthPower1 = prod(answer8, answer8);
- printf("assigned fourthPower1\n");
- BigInteger fourthPower2 = prod(answer9, answer9);
- printf("assigned fourthPower2\n");
- BigInteger fifthPower = prod(answer9, B);
- printf("assigned fifthPower\n");
- BigInteger nine = stringToBigInteger("9");
- printf("assigned nine\n");
- BigInteger sixteen = stringToBigInteger("16");
- printf("assigned sixteen\n");
- BigInteger partA = prod(fourthPower1, nine);
- printf("assigned partA\n");
- BigInteger partB = prod(fifthPower, sixteen);
- printf("assigned partB\n");
- BigInteger answer10 = sum(partA, partB);
- printf("assigned answer10\n");
- printBigInteger(out, answer10);
- freeBigInteger(&answer8);
- printf("freed answer8\n");
- freeBigInteger(&answer9);
- printf("freed answer9\n");
- freeBigInteger(&fourthPower1);
- printf("freed fourthPower1\n");
- freeBigInteger(&fourthPower2);
- printf("freed fourthPower2\n");
- freeBigInteger(&fifthPower);
- printf("freed fifthPower\n");
- freeBigInteger(&nine);
- printf("freed nine\n");
- freeBigInteger(&sixteen);
- printf("freed sixteen\n");
- freeBigInteger(&partA);
- printf("freed partA\n");
- freeBigInteger(&partB);
- printf("freed partB\n");
- freeBigInteger(&answer10);
- printf("freed answer10\n");
- fprintf(out, "\n");
- return(EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement