#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int top1 = -1;
int top2 = -1;
int top3 = -1;
int stack1[101];
int stack2[101];
int stack3[101];
void spush1(int* S);
void spush2(int* S);
void calculate(void);
void plus(void);
void pop(void);
int main() {
char s1[101] = { 0, }, s2[101] = { -1, };//문자열로써 큰 자리수의 숫자를 입력받는다.
int S1[101] = { 0, }, S2[101] = { -1, };//문자열로 받은 큰 자리수를 INT형으로 바꿔줄 빈 배열을 하나 할당한다.
scanf("%s %s", s1, s2);
for (int i = 0; i < 101; i++) {//문자열에서 인트형으로 변환시켜준다.
S1[i] = s1[i] - 48;
}
for (int i = 0; i < 101; i++) {
S2[i] = s2[i] - 48;
}
spush1(S1);
spush2(S2);
calculate();
plus();
pop();
}
void spush1(int* S) {// spush1 과 spush2 두 함수를 매개변수만 달리하여 같이 쓰고 싶은데 매개변수로 top과 stack 배열을 사용하면 값이 적용이 안된다. 원인이 무엇인가?
for (int i = 0; ; i++) {
if (S[i] < 0) break;
top1++;
stack1[top1] = S[i];
}
}
void spush2(int* S) {
for (int i = 0; ; i++) {
if (S[i] < 0) break;
top2++;
stack2[top2] = S[i];
}
}
void calculate(void) {
while (top1 >= 0 || top2 >= 0) {
top3++;
stack3[top3] = stack1[top1] + stack2[top2];
top1--;
top2--;
}
}
void plus(void) {
for (int i = 0; i <=top3; i++) {
if (stack3[i] >= 10) {
stack3[i + 1] = stack3[i + 1] + 1;
if (stack3[top3] >= 10) {
top3++;
}
stack3[i] = stack3[i] % 10;
}
}
}
void pop(void) {
while (top3 >= 0) {
printf("%d", stack3[top3]);
top3--;
}
}