#include<iostream>
#include<string>
using namespace std;
const int MAX = 100 ;
typedef string mytype;
class Add_Stack{
public :
Add_Stack( ) ;
void push( mytype num) ;
void pop( ) ;
mytype Top( ) ;
bool IsEmpty( ) const ;
bool IsFull( ) const ;
private :
string arr[ MAX] ;
int top;
} ;
Add_Stack:: Add_Stack ( ) { // 생성자
top = - 1 ;
}
bool Add_Stack:: IsEmpty ( ) const
{
return ( top == - 1 ) ;
}
bool Add_Stack:: IsFull ( ) const
{
return ( top == MAX - 1 ) ;
}
void Add_Stack:: push ( mytype num)
{
if ( IsFull( ) )
cout << "Error: the stack is full." << endl;
top++ ;
arr[ top] = num[ top] ;
}
void Add_Stack:: pop ( )
{
if ( IsEmpty( ) )
{
cout << "Error : Stack is Empty" << endl;
}
else
{
top-- ;
}
}
mytype Add_Stack:: Top ( )
{
if ( IsEmpty( ) )
cout << "Error : Stack is Empty" << endl;
else
{
return arr[ top] ;
}
}
int main( ) {
Add_Stack one, two, result;
mytype a, b;
int result_num, carry= 0 ;
cout << "덧셈할 두 수를 입력해주세요 :" ;
cin >> a >> b;
for ( int i = 0 ;; i++ )
{
if ( a[ i] == NULL )
{
int one_last_index = i - 1 ;
break ;
}
one.push ( a) ;
}
for ( int i = 0 ;; i++ )
{
if ( b[ i] == NULL )
{
int two_last_index = i - 1 ;
break ;
}
two.push ( b) ;
}
while ( ! one.IsEmpty ( ) || ! two.IsEmpty ( ) )
{
result_num = atoi ( one.Top ( ) .c_str ( ) ) + atoi ( two.Top ( ) .c_str ( ) ) ;
one.pop ( ) ;
two.pop ( ) ;
result.push ( to_string( ( result_num % 10 ) + carry) ) ;
carry = ( result_num / 10 ) ;
}
if ( carry ! = 0 )
{
result.push ( to_string( carry) ) ;
}
while ( ! result.IsEmpty ( ) )
{
cout << result.Top ( ) << endl;
result.pop ( ) ;
}
return 0 ;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNQVggPSAxMDA7CnR5cGVkZWYgc3RyaW5nIG15dHlwZTsKCmNsYXNzIEFkZF9TdGFja3sKcHVibGljOgoJQWRkX1N0YWNrKCk7Cgl2b2lkIHB1c2gobXl0eXBlIG51bSk7Cgl2b2lkIHBvcCgpOwogICAgbXl0eXBlIFRvcCgpOwoJYm9vbCBJc0VtcHR5KCkgY29uc3Q7Cglib29sIElzRnVsbCgpIGNvbnN0Owpwcml2YXRlOgoJc3RyaW5nIGFycltNQVhdOwoJaW50IHRvcDsKfTsKQWRkX1N0YWNrOjpBZGRfU3RhY2soKXsgIC8vIOyDneyEseyekAoKCXRvcCA9IC0xOwp9CmJvb2wgQWRkX1N0YWNrOjpJc0VtcHR5KCkgY29uc3QKewoJcmV0dXJuKHRvcCA9PSAtMSk7Cn0KYm9vbCBBZGRfU3RhY2s6OklzRnVsbCgpIGNvbnN0CnsKCXJldHVybiAodG9wID09IE1BWCAtIDEpOwp9CnZvaWQgQWRkX1N0YWNrOjpwdXNoKG15dHlwZSBudW0pCnsKCWlmIChJc0Z1bGwoKSkKCQljb3V0IDw8ICJFcnJvcjogdGhlIHN0YWNrIGlzIGZ1bGwuIiA8PCBlbmRsOwoJdG9wKys7CglhcnJbdG9wXSA9IG51bVt0b3BdOwp9CnZvaWQgQWRkX1N0YWNrOjpwb3AoKQp7CglpZiAoSXNFbXB0eSgpKQoJewoJCWNvdXQgPDwgIkVycm9yIDogU3RhY2sgaXMgRW1wdHkiIDw8IGVuZGw7Cgl9CgllbHNlCgl7CgkJdG9wLS07Cgl9CgkKfQpteXR5cGUgQWRkX1N0YWNrOjpUb3AoKQp7CglpZiAoSXNFbXB0eSgpKQoJCWNvdXQgPDwgIkVycm9yIDogU3RhY2sgaXMgRW1wdHkiIDw8IGVuZGw7CgllbHNlCgl7CgkJcmV0dXJuIGFyclt0b3BdOwoJfQp9CgppbnQgbWFpbigpewoKCUFkZF9TdGFjayBvbmUsIHR3bywgcmVzdWx0OwoJbXl0eXBlIGEsIGI7CglpbnQgcmVzdWx0X251bSwgY2Fycnk9MDsKCWNvdXQgPDwgIuuNp+yFiO2VoCDrkZAg7IiY66W8IOyeheugpe2VtOyjvOyEuOyalCA6IjsKCWNpbiA+PiBhID4+IGI7Cglmb3IgKGludCBpID0gMDs7IGkrKykKCXsKCQlpZiAoYVtpXSA9PSBOVUxMKQoJCXsKCQkJaW50IG9uZV9sYXN0X2luZGV4ID0gaSAtIDE7CgkJCWJyZWFrOwoJCX0KCQlvbmUucHVzaChhKTsKIAl9Cglmb3IgKGludCBpID0gMDs7IGkrKykKCXsKCQlpZiAoYltpXSA9PSBOVUxMKQoJCXsKCQkJaW50IHR3b19sYXN0X2luZGV4ID0gaSAtIDE7CgkJCWJyZWFrOwoJCX0KCQl0d28ucHVzaChiKTsKCX0KCXdoaWxlICghb25lLklzRW1wdHkoKSB8fCAhdHdvLklzRW1wdHkoKSkKCXsKCQlyZXN1bHRfbnVtID0gYXRvaShvbmUuVG9wKCkuY19zdHIoKSkgKyBhdG9pKHR3by5Ub3AoKS5jX3N0cigpKTsKCQlvbmUucG9wKCk7CgkJdHdvLnBvcCgpOwoJCXJlc3VsdC5wdXNoKHRvX3N0cmluZygocmVzdWx0X251bSAlIDEwICkrY2FycnkpKTsKCQljYXJyeSA9IChyZXN1bHRfbnVtIC8gMTApOwoJfQoJaWYgKGNhcnJ5ICE9IDApCgl7CgkJcmVzdWx0LnB1c2godG9fc3RyaW5nKGNhcnJ5KSk7Cgl9Cgl3aGlsZSAoIXJlc3VsdC5Jc0VtcHR5KCkpCgl7CgkJY291dCA8PCByZXN1bHQuVG9wKCkgPDwgZW5kbDsKCQlyZXN1bHQucG9wKCk7Cgl9CglyZXR1cm4gMDsKfQ==
compilation info
prog.cpp: In function 'int main()':
prog.cpp:70:15: warning: NULL used in arithmetic [-Wpointer-arith]
if (a[i] == NULL)
^
prog.cpp:79:15: warning: NULL used in arithmetic [-Wpointer-arith]
if (b[i] == NULL)
^
prog.cpp:88:38: error: 'atoi' was not declared in this scope
result_num = atoi(one.Top().c_str()) + atoi(two.Top().c_str());
^
prog.cpp:91:49: error: 'to_string' was not declared in this scope
result.push(to_string((result_num % 10 )+carry));
^
prog.cpp:96:30: error: 'to_string' was not declared in this scope
result.push(to_string(carry));
^
stdout