ايران ويج

نسخه‌ی کامل: تحلیل و توضیح کد سی پلاس پلاس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
از دوستان لطفا هر کی بلده این کدها رو برای من توضیح بده لطفاً
کد:
#include<iostream.h>
#include<conio.h>
#include<string.h>

#define max 200

class bi
{
int a[max];
public:
bi();
bi(char []);
bi add(bi);
bi zarb(bi);
void print();
};

bi::bi()
{
for(int i=max;i>=0;i--)
a[i]=0;
}

bi::bi(char b[])
{
int str,k=0,i;
str=strlen(b);
for(i=max-str;i<max;i++)
a[i]=(int)b[k++]-48;
for(i=0;i<max-str;i++) a[i]=0;

}

bi bi::add(bi z)
{
bi t("000");
for(int i=max-1;i>=0;i--)
{
t.a[i-1]=(a[i]+z.a[i]+t.a[i])/10;
t.a[i]=(a[i]+z.a[i]+t.a[i])%10;
}
return t;
}


bi bi::zarb(bi z)
{
bi t("0000");
int i,j,k=max-1;
for(i=max-1;i>=0;i--)
{
for(j=max-1;j>=0;j--)
{
t.a[k-1]=(a[i]*z.a[j]+t.a[k])/10+t.a[k-1];
t.a[k]=(a[i]*z.a[j]+t.a[k])%10;
k--;
}
k=i-1;
}
return t;
}



void bi::print()
{
int j;
for(int i=0;i<max;i++)
if(a[i]) {j=i;break;}
for(i=j;i<max;i++)
cout<<a[i];
cout<<endl<<"*************************************  **********\n";
}


void main()
{
clrscr();
char *int1,*int2;
cin>>int1>>int2;
bi a(int1),b(int2),c("000");
cout<<"Sum: ";
c=a.add(b);c.print();
cout<<"Mul: ";
c=a.zarb(b);c.print();
getch();
}
این برنامه اعداد بزرگ رو جمع و ضرب میکنه
تو توربو سی پلاس پلاس نوشته شده
من میخوام بدونم چجوری کار میکنه روال کارش چطوریه
هر کی بلده کدهاش رو برام توضیح بده
ممنون
اینهمه کد رو توضیح بدیم؟ Biggrin جاهای حساسشو توضیح میدم Biggrin

کد php:
class bi 
یعنی میخواییم یه کلاس بسازیم؛ و اجزای کلاس رو توش تعریف میکنم

کد php:
bi:: 
با استفاده از این؛ اون اجزایی از کلاس bi رو که نوشته بودیم تعریف میکنیم؛
مثلا:
کد php:
bi bi::zarb(bi z
یعنی نابع zarb که از کلاس bi هست و ۲ تا پارامتر میگیره و خروجیش یه کلاس دیگه از کلاس bi هست Biggrin

کد php:
bi a(int1),b(int2),c("000"); 
یسری متغیر از اون کلاس bi درست کرده؛

بقیه قسمت‌هاش هم که سادت دیگه Biggrin
ممنون
لطفاً کل کدهای تابع ضرب و جمع رو توضیح بدین
و همینطور این رو define max 200
این قسمت دقیقاً یعنی چی؟
کد:
bi::bi(char b[])
{
int str,k=0,i;
str=strlen(b);
for(i=max-str;i<max;i++)
a[i]=(int)b[k++]-48;
for(i=0;i<max-str;i++) a[i]=0;

}
چرا منهای 48 شده؟؟؟
کلاً این تابع کارش چیه تو برنامه؟