با سلام.
گفتید توضیح میخواید اومدم توضیح بدم!
بدون کلاس هم میشه نوشت.فقط نیاز به آرایه برای نگهداری عدد هست.
برای عمل جمع فقط یک for میخواید که هربار عددی رو از هر دو آرایه بگیره و با رقم نقلی جمع بزنه و در آرایه جواب قرار بده.
int carry=0;
int sum;
for(i=lenth-1;i>=0;i--)
{
sum=a[i]+b[i]+carry;
c[i]=sum%10;
carry=sum/10;
}
و برای ضرب هم باید بکمک دو for همه اعضای آرایه اول رو در اعضای آرایه دوم ضرب کنی و برای هر حاصل ضرب نتیجه رو با رقم نقلی جمع بزنی و در آرایه سوم بریزی.نکتش فقط اینه که اندیس آرایه سوم باید بعد از هربار اجرای for داخلی (به ازای هر عدد از آرایه اولی ) یکی عقب بیاد.تو عمل ضرب دستی هم همین کار رو انجام میدیم.
int carry,mul,col=0;
for(i=a_lenth-1;i>=0;i--)
{
carry=0;
for(j=b_lenth-1;j>=0;j--)
{
mul=(a[i]*b[j])+carry;
c[j-col]+=mul%10;
carry=mul/10;
}
col++;
}
تفریق هم به این ترتیبه که اگر عملوند اول از عملوند دوم کمتر بود،عملوند اول رو با 10 جمع میکنی و متغیر carry رو یک میکنی و حالا دفعه بعد اگه carry یک بود و عملوند اول صفر نبود از اون یه واحد کم میکنی و carry رو صفرمیکنی ، و اگر صفر بود عملوند اول رو 9 میگیری و carry رو دست نمیزنی.البته همه اینها بشرطی هستن که عملوند اول از دوم کوچکتر باشه.
int carry=0;
for(i=lenth-1;i>=lenth-a_lenth;i--)
{
c[i]=a[i]-b[i];
if(carry==1)
{
if(a[i]==0)
c[i]+=9;
else
{
c[i]--;
carry=0;
if(c[i]<0)
{
c[i]+=10;
carry=1;
}
}
}
if(c[i]<0)
{
c[i]+=10;
carry=1;
}
}
درمورد تقسیم تابحال فکرنکرده ام!