1. hasti
  2. برنامه‌نویسی و طراحی وب
  3. یکشنبه, 26 آذر 1391
salam man ye soal daram darmorede barnamenevici be zabane c++.............do adade 20 raghami ro begire ba ham jam kone be komake sakhtare arraye
hadi moazen بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
این برنامه هم جمع و هم تفریق رو محاسبه میکنه
#include <iostream>
#include <conio.h>
using namespace std;


int main()
{
int a[20];
int b[20];
int sum[21];
int sub[20];

// مقدار دهی اولیه دو عدد با دادن مقدار 0 به رقم های آن
for(int i=0;i<20;i++)
{
a[i]=0;
b[i]=0;
}

//گرفتن عدد اول
cout<<"please enter the first number(up to 20 digit - don't press \"Enter\" after a 20 digit number ):\n\n";
char ch;
for(int i=0;i<20;i++)
{
ch=getch();
if(ch=='\r')
break;
else
{
for(int j=0;j<19;j++)
{
a[j]=a[j+1];
}
a[19]=0;
}
while(ch<'0' || ch>'9')
{
ch=getch();
}
cout<<ch;
a[19]=(int)ch-48;
}

//گرفتن عدد دوم
cout<<"\n\n\nplease enter the second number(up to 20 digit - don't press \"Enter\" after a 20 digit number ):\n\n";
for(int i=0;i<20;i++)
{
ch=getch();
if(ch=='\r')
break;
else
{
for(int j=0;j<19;j++)
{
b[j]=b[j+1];
}
b[19]=0;
}
while(ch<'0' || ch>'9')
{
ch=getch();
}
cout<<ch;
b[19]=(int)ch-48;
}

cout<<"\n\n************************************************\n\n";


//محاسبه عمل جمع
int carry=0;
int temp; // تعریف یک متغیر کمکی
for(int i=19;i>=0;i--)
{
temp=a[i]+b[i]+carry;
carry=temp/10;
sum[i+1]=temp%10;
}
sum[0]=carry;

// چاپ حاصل جمع دو عدد

cout<<" sum of 2 number= ";
int m=0;
for(int i=0;i<=20;i++)
{
if(sum[i]!=0 || m>0)
{
cout<<sum[i];
m++;
}
}
if(m==0)
cout<<"0";



//محاسبه عمل تفریق - ابتدا چک میکنیم کدام عدد بزرگتر است، عدد اول یا دوم که بدانیم کدام را باید از دیگری کم کرد
for(int i=0;i<20;i++)
{
if(a[i]>b[i])
{
ch='1'; //عدد اول از دوم بزرگتر است
break;
}
else if(a[i]<b[i])
{
ch='2'; //عدد دوم از اول بزرگتر است
break;
}
else
ch='0'; // دو عدد مساوی اند
}

if(ch=='1' || ch=='0') //اگر عدد اول از دومی بزرگتر است یا هر دو مساویند
{
carry=0;
for(int i=19;i>=0;i--)
{
if(a[i]<b[i])
{
a[i-1]=a[i-1]-1;
carry=10;
}
temp=a[i]-b[i]+carry;
sub[i]=temp;
carry=0;
}
}
else //در غیر اینصورت یعنی اگر عدد دوم از اولی بزرگتر است
{
carry=0;
for(int i=19;i>=0;i--)
{
if(b[i]<a[i])
{
b[i-1]=b[i-1]-1;
carry=10;
}
temp=b[i]-a[i]+carry;
sub[i]=temp;
carry=0;
}
}

// چاپ حاصل تفریق دو عدد
cout<<"\n\n subtract of 2 number= ";
m=0;
for(int i=0;i<20;i++)
{
if(sub[i]!=0 || m>0)
{
cout<<sub[i];
m++;
}
}
if(m==0)
cout<<"0";



cout<<"\n\n\nend.\n\n";
getch();
return 0;
}
MMS بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
به اين مسئله BigNum گفته ميشه. به طور كلى، براى عمليات BigNum كد روش دستى زده ميشه. يعنى درست همان طور كه اعداد رو زير هم روى كاغذ مى نويسيم و جمع مى كنيم، برنامه هم روى آرايه اين كار رو انجام بده.
زدن كدش هم كار سختى نيست.
  • صفحه :
  • 1


هنوز پاسخی به این پست ارسال نشده است.
البته از آنجایی که هنوز در سایت لاگین نکرده‌اید، اجازه‌ی پاسخ دادن به این پست را ندارید.