//
// Assignment 2 Task 4 template
// Copyright © 2019 HKU ENGG1340. All rights reserved.
//
#include <stdio.h>
const int MAX_INT_LENGTH = 100;
///////// DO NOT MODIFY ANYTHING ABOVE THIS LINE /////////
// IMPORTANT: Do NOT change any of the function headers already provided to you
// It means that you will need to use the function headers as is
// You may implement additional functions here
void printArray(char arr[], int size)
{
int i;
for (i=0; i < size; i++)
}
void rvereseArray(char arr[], int start, int end)
{
char temp;
while (start < end)
{
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
//
// AddTwoBigNumbers: to sum up two big numbers represented as digits in a char clear_char_array
//
// input: char bigN[], char bigM[]: two large numbers
// output the sum as a big number in the input array char sum[]
void AddTwoBigNumbers(char bigN[], char bigM[], char sum[])
{
rvereseArray(bigN,0,100);
rvereseArray(bigM,0,100);
//calculation
int carry =0;
for(int i=100;i>=0;i--)
{
int sum_two = ((bigN[i]-'0') + (bigM[i]-'0') + carry);
sum[i]=(sum_two%10 + '0');
carry = sum_two/10;
}
rvereseArray(sum,0,100);
}
///////// DO NOT MODIFY ANYTHING BELOW THIS LINE /////////
// Function: main function
// ==============================================================
int main()
{
char bignum[2][MAX_INT_LENGTH]; // bignum[0] and bignum[1] are to store the digits of the two input number
char sum[MAX_INT_LENGTH+1]; // to store the sum of the two big numbers
// read in two numbers
// calculate sum of the two numbers
AddTwoBigNumbers(bignum[0], bignum[1], sum);
// display the sum on screen
return 0;
}
Ly8KLy8gIEFzc2lnbm1lbnQgMiBUYXNrIDQgdGVtcGxhdGUKLy8gIENvcHlyaWdodCDCqSAyMDE5IEhLVSBFTkdHMTM0MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8KCiNpbmNsdWRlIDxzdGRpby5oPgoKY29uc3QgaW50IE1BWF9JTlRfTEVOR1RIID0gMTAwOwoKLy8vLy8vLy8vIERPIE5PVCBNT0RJRlkgQU5ZVEhJTkcgQUJPVkUgVEhJUyBMSU5FIC8vLy8vLy8vLwoKLy8gSU1QT1JUQU5UOiAgRG8gTk9UIGNoYW5nZSBhbnkgb2YgdGhlIGZ1bmN0aW9uIGhlYWRlcnMgYWxyZWFkeSBwcm92aWRlZCB0byB5b3UKLy8gICAgICAgICAgICAgSXQgbWVhbnMgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIHVzZSB0aGUgZnVuY3Rpb24gaGVhZGVycyBhcyBpcwoKCi8vIFlvdSBtYXkgaW1wbGVtZW50IGFkZGl0aW9uYWwgZnVuY3Rpb25zIGhlcmUKdm9pZCBwcmludEFycmF5KGNoYXIgYXJyW10sIGludCBzaXplKQp7CiAgaW50IGk7CiAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspCiAgICBwcmludGYoIiVjICIsIGFycltpXSk7CgogIHByaW50ZigiXG4iKTsKfQoKdm9pZCBydmVyZXNlQXJyYXkoY2hhciBhcnJbXSwgaW50IHN0YXJ0LCBpbnQgZW5kKQp7CiAgICBjaGFyIHRlbXA7CiAgICB3aGlsZSAoc3RhcnQgPCBlbmQpCiAgICB7CiAgICAgICAgdGVtcCA9IGFycltzdGFydF07CiAgICAgICAgYXJyW3N0YXJ0XSA9IGFycltlbmRdOwogICAgICAgIGFycltlbmRdID0gdGVtcDsKICAgICAgICBzdGFydCsrOwogICAgICAgIGVuZC0tOwogICAgfQp9CgoKCgovLwovLyBBZGRUd29CaWdOdW1iZXJzOiB0byBzdW0gdXAgdHdvIGJpZyBudW1iZXJzIHJlcHJlc2VudGVkIGFzIGRpZ2l0cyBpbiBhIGNoYXIgY2xlYXJfY2hhcl9hcnJheQovLwovLyBpbnB1dDogIGNoYXIgYmlnTltdLCBjaGFyIGJpZ01bXTogIHR3byBsYXJnZSBudW1iZXJzCi8vIG91dHB1dCB0aGUgc3VtIGFzIGEgYmlnIG51bWJlciBpbiB0aGUgaW5wdXQgYXJyYXkgY2hhciBzdW1bXQp2b2lkIEFkZFR3b0JpZ051bWJlcnMoY2hhciBiaWdOW10sIGNoYXIgYmlnTVtdLCBjaGFyIHN1bVtdKQp7CiAgcnZlcmVzZUFycmF5KGJpZ04sMCwxMDApOwogIHJ2ZXJlc2VBcnJheShiaWdNLDAsMTAwKTsKCiAgLy9jYWxjdWxhdGlvbgogIGludCBjYXJyeSA9MDsKICBmb3IoaW50IGk9MTAwO2k+PTA7aS0tKQogIHsKICAgIGludCBzdW1fdHdvID0gKChiaWdOW2ldLScwJykgKyAoYmlnTVtpXS0nMCcpICsgY2FycnkpOwogICAgc3VtW2ldPShzdW1fdHdvJTEwICsgJzAnKTsKICAgIGNhcnJ5ID0gc3VtX3R3by8xMDsKICB9CiAgcnZlcmVzZUFycmF5KHN1bSwwLDEwMCk7Cn0KCgovLy8vLy8vLy8gRE8gTk9UIE1PRElGWSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgLy8vLy8vLy8vCgovLyBGdW5jdGlvbjogbWFpbiBmdW5jdGlvbgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQppbnQgbWFpbigpCnsKICBjaGFyIGJpZ251bVsyXVtNQVhfSU5UX0xFTkdUSF07IC8vIGJpZ251bVswXSBhbmQgYmlnbnVtWzFdIGFyZSB0byBzdG9yZSB0aGUgZGlnaXRzIG9mIHRoZSB0d28gaW5wdXQgbnVtYmVyCiAgY2hhciBzdW1bTUFYX0lOVF9MRU5HVEgrMV07ICAgICAvLyB0byBzdG9yZSB0aGUgc3VtIG9mIHRoZSB0d28gYmlnIG51bWJlcnMKCiAgLy8gcmVhZCBpbiB0d28gbnVtYmVycwogIHNjYW5mKCIlcyIsIGJpZ251bVswXSk7CiAgc2NhbmYoIiVzIiwgYmlnbnVtWzFdKTsKICAvLyBjYWxjdWxhdGUgc3VtIG9mIHRoZSB0d28gbnVtYmVycwogIEFkZFR3b0JpZ051bWJlcnMoYmlnbnVtWzBdLCBiaWdudW1bMV0sIHN1bSk7CgogIC8vIGRpc3BsYXkgdGhlIHN1bSBvbiBzY3JlZW4KICBwcmludGYoIiVzXG4iLCBzdW0pOwoKCiAgcmV0dXJuIDA7Cn0K