بنام خدا
با سلام
لطفاً تابعي رو برام بنويسيد كه با آن بتوان اعداد نجومي خارج از محدوده تعريف زبان سي بكار برد
Printable View
بنام خدا
با سلام
لطفاً تابعي رو برام بنويسيد كه با آن بتوان اعداد نجومي خارج از محدوده تعريف زبان سي بكار برد
سلام.
يكي از روش هايي كه براي ذخيره و عمليات روي اعداد بزرگ به كار ميره. استفاده از رشته هاست.
رشته ها اين امكان رو به شما ميدن كه يه عدد با طول دلخواه رو ذخيره كنيد. براي انجام عمليات حسابي روي اين اعداد كافي از الگوريتم هاي كه براي اين عمليات استفاده ميشه استفاده كرد.
كد زير به شما نشون ميده كه چطور ميشه دو عدد با طول دلخواه رو با هم جمع كرد.
همين طور براي ساير operator ها.کد:#include <IOstream>
#include <String>
using namespace std;
const int Lenght = 500;
void Sum(char *FirstNum,char *SecondNum);
void Rev(char *Str);
int main()
{
char First[Lenght];
char Second[Lenght];
cout << "Type Number" << "\n";
cin >> First >> Second;
Sum(First,Second);
return 0;
}
void Sum(char *FirstNum,char *SecondNum)
{
int iFirstLen,iFirst;
int iSecondLen,iSecond;
int iSum;
int carry = 0;
char cSum[Lenght];
int k = 0;
iFirstLen = strlen(FirstNum) - 1;
iSecondLen = strlen(SecondNum) - 1;
while( iFirstLen >=0 || iSecondLen >=0)
{
iFirst = FirstNum[iFirstLen] - 48;
iSecond = SecondNum[iSecondLen] - 48;
if( iFirstLen < 0 )
iFirst = 0;
if( iSecondLen < 0 )
iSecond = 0 ;
iSum = iFirst + iSecond + carry;
if(iSum > 9)
carry = 1;
else
carry = 0;
cSum[k] = ( iSum % 10 ) + 48;
k++;
iFirstLen --;
iSecondLen--;
}
if( carry == 1)
{
cSum[k] = iSum % 10 + 48;
cSum[k++] = '\0';
}
else
cSum[k] = '\0';
Rev(cSum);
cout << "\n" << cSum << endl;
}
void Rev(char *str)
{
int iStr;
char temp[Lenght];
iStr = strlen(str) - 1 ;
int i = 0;
for(int k = iStr ; k >= 0 ; k--)
{
temp[i] = str[k];
i++;
}
temp[i] = '\0';
strcpy(str,temp);
}
اگه مشكلي پيش اومد اطلاع بديد.
ممنون.
بنام خدا
با تشكر از شما
اما اين تابع شما هر عدد خيلي بزرگ رو جواب نميده چون آرايه اون ثابت تعريف شده لطفا اونو جوري بنويسيد كه در هنگام اجراي يك برنامه با اين تابع مقدار آرايه از اون برنامه دريافت شود
سلام دوست عزيز.نقل قول:
نوشته شده توسط rouhallah
احتمالا برداشت شما از اين forum اشتباه هست. شما خودتون بايد برنامه رو بنويسيد نه اينكه اون رو سفارش بديد.
"لطفا اونو جوري بنويسيد "
در اينجا معمولا سئوال مطرح ميشه ودر خور نيازش دوستان لطف ميكنن و بعضي وقت ها كد هم در توضيحاتشون قرار ميدن.به شرطي كه موضوع جديد باشه وجاي كار داشته باشه.شما بهتره كمي خودتون كار كنيد اگه به مشكل برخورديد سئوال بذاريد. نه اينكه اون رو سفارش بديد.
ممنون.