i dont understand how i am getting SIGABRT error:
spoj.pl/problems/ABSYS/
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string subtract(string s1,string s2);
string sum(string s1,string s2);
int main()
{
string s,num1,num2,result;
int n,pos1,pos2;
cin>>n;
getline(cin,s);
while(n--)
{
getline(cin,s);
getline(cin,s);
pos1=s.find("+");
pos2=s.find("=");
int pos=s.find("machula");
if(pos<pos1)
{
num1=s.substr(pos1+2,pos2-pos1-3);
num2=s.substr(pos2+2);
result=subtract(num2,num1);
s.erase(0,pos1-1);
s.insert(0,result);
}
else if(pos>pos1&&pos<pos2)
{
num1=s.substr(0,pos1-1);
num2=s.substr(pos2+2);
result=subtract(num2,num1);
s.erase(pos1+2,pos2-pos1-3);
s.insert(pos1+2,result);
}
else
{
num1=s.substr(0,pos1-1);
num2=s.substr(pos1+2,pos2-pos1-3);
result=sum(num1,num2);
s.erase(pos2+2,s.length()-pos2-1);
s.insert(pos2+2,result);
}
cout<<s<<endl;
}
return 0;
}
string sum(string s1,string s2)
{
string s;
int car=0,len=0;
int m=s1.length()-1;
int n=s2.length()-1;
while(1)
{
int k=n<0?48:int(s2[n]);
int r=m<0?48:int(s1[m]);
int t=k+r+car-96;
car=t/10;
if(n<0&&m<0&&car==0)
break;
s.insert(0,1,char((t%10)+48));
m--;
n--;
len++;
}
return s;
}
string subtract(string s1,string s2)
{
string s;
int bor,car=0,len=0;
int m=s1.length()-1;
int n=s2.length()-1;
while(1)
{
int k=n<0?48:int(s2[n]);
int r=m<0?48:int(s1[m]);
bor=((r+car)<k)?10:0;
char t=char(r-k+bor+car+48);
car=(bor)?-1:0;
if(t<=48&&m<=0)
break;
s.insert(0,1,t);
m--;
n--;
len++;
}
return s;
}
plz help.