امروز به یک سوال سبتا آسان برنامه نویسی C++ برخورد کردم. سوال به شرح زیر بود :
برنامه ای بنویسید که دو عدد طبیعی حداکثر 50 رقمی را از ورودی گرفته و آنها را با یکدیگر
جمع کرده و نتیجه را چاپ کند. (با استفاده ا ز آرایه حل شود)
گویا منظور این بوده است که هر رقم از عدد را در حداکثر 50 خانه قرار دهیم و سپس خانه های دو آرایه را با هم جمع کنیم.
برنامه ای که برای این سوال نوشتم به شرح زیر می باشد :
#include <cstdlib>
#include <iostream>
using namespace std;
long long first;
long long second;
int f[50];
int s[50];
int p[51];
int i=50;
int main(int argc, char *argv[])
{
cin>>first;
cout<<endl;
cin>>second;
cout<<endl;
while(first!=0)
{
f[i]=first%10;
first=first-f[i];
first=first/10;
i=i-1;
}
i=50;
while(second!=0)
{
s[i]=second%10;
second=second-s[i];
second=second/10;
i=i-1;
}
for(i=50;i<=0;i--)
if(f[i]+s[i]+p[i]>=10)
{
p[i]=p[i]+f[i]+s[i]-10;
p[i-1]=1;
}
else
{
p[i]=p[i]+f[i]+s[i];
}
for(i=0;i<=50;i++)
cout<<p[i];
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
به نظرم از نظر الگوریتمی برنامه درست می باشد اما جواب لازم را به دست نمی آورم. در اعداد با تعداد ارقام کم نتیجه چندین صفر می باشد و در اعداد با تعداد ارقام زیاد عدد دوم دریافت نمی شود.
با تشکر ممنون می شوم اگر پاسخی به من بدهید.
چه کار کنم که مشکلم برطرف شوم؟