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) {
- dest[0] = fgetc(in);
- int i = 1;
- if (dest[0] == '-' || dest[0] == '+') {
- size++;
- }
- for (; i < size; i++) {
- dest[i] = fgetc(in);
- }
- dest[size] = '\0';
- printf("%s\n", dest);
- }
- 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);
- readBigInteger(in, stringA, size);
- fgets(line, sizeof(line), in); // 3rd and 4th line of input
- fgets(line, sizeof(line), in);
- sscanf(line, "%d", &size);
- readBigInteger(in, stringB, size);
- BigInteger A = stringToBigInteger(stringA);
- BigInteger B = stringToBigInteger(stringB);
- // print A
- printBigInteger(out, A);
- fprintf(out, "\n");
- // print B
- printBigInteger(out, B);
- fprintf(out, "\n");
- // print A + B
- BigInteger answer3 = sum(A, B);
- printBigInteger(out, answer3);
- fprintf(out, "\n");
- // print A - B
- BigInteger answer4 = diff(A, B);
- printBigInteger(out, answer4);
- fprintf(out, "\n");
- // print A - A
- BigInteger answer5 = diff(A, A);
- printBigInteger(out, answer5);
- freeBigInteger(&answer5);
- fprintf(out, "\n");
- // print 3A - 2B
- BigInteger three = stringToBigInteger("3");
- BigInteger two = stringToBigInteger("2");
- BigInteger prodA = prod(A, three);
- BigInteger prodB = prod(B, two);
- BigInteger answer6 = diff(prodA, prodB);
- printBigInteger(out, answer6);
- freeBigInteger(&three);
- freeBigInteger(&two);
- freeBigInteger(&prodA);
- freeBigInteger(&prodB);
- freeBigInteger(&answer6);
- fprintf(out, "\n");
- // print AB
- BigInteger answer7 = prod(A, B);
- printBigInteger(out, answer7);
- fprintf(out, "\n");
- // print A^2
- BigInteger answer8 = prod(A, A);
- printBigInteger(out, answer8);
- fprintf(out, "\n");
- // print B^2
- BigInteger answer9 = prod(B, B);
- printBigInteger(out, answer9);
- fprintf(out, "\n");
- // print 9A^4 + 16B^5
- BigInteger fourthPower1 = prod(answer8, answer8);
- BigInteger fourthPower2 = prod(answer9, answer9);
- BigInteger fifthPower = prod(fourthPower2, B);
- BigInteger nine = stringToBigInteger("9");
- BigInteger sixteen = stringToBigInteger("16");
- BigInteger partA = prod(fourthPower1, nine);
- BigInteger partB = prod(fifthPower, sixteen);
- BigInteger answer10 = sum(partA, partB);
- printBigInteger(out, answer10);
- freeBigInteger(&answer8);
- freeBigInteger(&answer9);
- freeBigInteger(&fourthPower1);
- freeBigInteger(&fourthPower2);
- freeBigInteger(&fifthPower);
- freeBigInteger(&nine);
- freeBigInteger(&sixteen);
- freeBigInteger(&partA);
- freeBigInteger(&partB);
- freeBigInteger(&answer10);
- fprintf(out, "\n");
- // close input and output files
- fclose(in);
- fclose(out);
- return(EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement