سلام
برنامه ای می خواستم که دو تا عدد اعشاری بزرگ رو بگیره و با هم جمع کنه (عدد اعشاری قسمت صحیحش حداکثر 50 رقمی و قسمت اعشاریش نیز حداکثر 50 رقمی باشد) ممنون
Printable View
سلام
برنامه ای می خواستم که دو تا عدد اعشاری بزرگ رو بگیره و با هم جمع کنه (عدد اعشاری قسمت صحیحش حداکثر 50 رقمی و قسمت اعشاریش نیز حداکثر 50 رقمی باشد) ممنون
سلام.
ميتونيد از link زیر استفاده کنید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
کافی از آرایه ها استفاده کنید. الگوریتم برنامه مشخص هست.
اگه مشکلی پیش اومد اطلاع بدید.
ممنون
دارم بررسی اش می کنم.
سلام
یه جاهایی از برنامه رو متوجه نشدم . می شه درموردش توضیح بدید.
1) چرا از 45 کم می کنیم.
2) cout , cin چی کار میکنند.
مرسی
راستی این برنامه برای اعداد اعشاری هم جواب می ده .پس ممیز رو چی کار میکنه .
ممنون به درد منم خورد ;)
نقل قول:
سلام
یه جاهایی از برنامه رو متوجه نشدم . می شه درموردش توضیح بدید.
1) چرا از 45 کم می کنیم.
2) cout , cin چی کار میکنند.
مرسی
راستی این برنامه برای اعداد اعشاری هم جواب می ده .پس ممیز رو چی کار میکنه .
سلام
شما داده ها رو به صورت یک رشته دریافت میکنید.
بنابراین مثلا 4 یک حرف هست نه یک عدد . برای اینکه مقدار دریافتی با عدد برابر باشه از 48عدد کم میکنیم.
میتونید به جدول اسکی نگاه کنید.
cin و cout (در ++C) به ترتیب برای دریافت از ورودی و نمایش اطلاعات استفاده میشه تقریبا معادل هستند با
scanf و printf
شما کافیه محل اعشار رو در رشته ی ورودی بدست بیارید و در پایان محاسبه دوباره ازش استفاده کنید.
چند تغییر کوچیک باید در برنامه ایجاد کنید.
ممنون
اما ممیز اعشاری رو متوجه نشدم چی شد ؟ میتونیم از وایل همون اول استفاده کنیم
دوباره سلام.
یه روش اینه : وقتی رشته اعداد رو از ورودی گرفتین در Buffer مورد نظر دنبال محل " . " بگردید.
شماره block مورد نظر رو ذخیره کنید و " . " رو از رشته حذف کنید.
بعد از پایان محاسبات تون محل جدید رو محاسبه کنید و دوباره " . " به رشته وارد کنید.
سلام
ممنون
اما تو جمع دو عدد اعشاری نمی تونیم ممیز رو برداریم وبعد جمع کنیم جواب نادرست می شه
می شه بگید چطوری مکان ممیز رو پیدا کنم. من هر روشی رو که امتحان کردم نشد
بازم تشکر میکنم
دوباره سلام.
از کد زیر میتونید برای پیداکردن موقعیت " . " استفاده کنید :
در ضم در نظر داشته باشید برای جمع دو عدد اعشاری تعداد رقم های اعشارشون باید با هم برابرکد:#include "iostream"
using namespace std;
int FindPos(char *num);
int main()
{
char *num = "123.4567";
int pos = FindPos(num);
cout << num << "\n" << "postion : " << pos << "\n";
return 0;
}
int FindPos(char *num)
{
int temp;
for(int i=0;i<strlen(num);i++)
{
if( num[i] == '.' )
{
temp = i+1;
break;
}
}
return temp;
}
باشه. چون از کدی که استفاده میکنید از یکان شروع به جمع میکنه.
مثلا :
در صورتی که باید به این شکل عمل بشه :کد:123.4567
1.2
بنابراین اگه تعداد رقم های اعشار با هم برابر نباشه نتیجه درست در نمیاد.کد:123.4567
1.2000
با استفاده از این کد میتونید تعداد رقم های اعشار رو پیدا کنید و عددی که تعداد رقم اعشار پایین تری
داره بعد از آخرین رقم اعشار بهش 0 اضافه کنید.
این کار رو میتونید با استفاده از strcat انجام بدید که در string.h قرار داره.کد:123.4567
1.2000