PDA

View Full Version : سوال: جداكردن اعداداعشاري ازاعدادصحيح



Iran58
پنج شنبه 26 فروردین 1389, 10:25 صبح
سلام
يك عدداعشاري دارم(طول آن مشحص نيست)
حال مي خواهم قسمت اعشاروصحيح راازهم جداكنم اما براي قسمت اعشاربه مشكل برخورده ام
ونمي دانم چكاري بايدكنم قسمت صحيح راتوانسته ام .ازچه كدي بايداستفاده كنم
باتشكر

amin1softco
پنج شنبه 26 فروردین 1389, 20:19 عصر
ببین باید قبل از سوال کردن یک جستجو می کردی
ولی در کل باید هر مر حله عدد رو بگیری در 10 ضرب کنی باقی مانده رو چاپ کنی
شبیه به این کد:


float f=100.12045;
cout<<int(f);

for(int i=0;i<5;i++){
f-=int(f);
f*=10;
cout<<int(f)%10;

}
یک راه ساده تر با ویژوال ایه که تبدیلش کنی به رشته


ostringstream f;
f << 2.5;
cout << f.str();


در سی می شه اینجوری عمل کرد


char* str = new char[20];
float flt = 2.4567F;
sprintf(str, "%.4g", flt );
cout<<str<<endl;

Salar Ashgi
پنج شنبه 26 فروردین 1389, 22:00 عصر
اصولا و قانونا باید تاپیک تون حذف میشد ، بدلیل بسیار تکراری بودن موضوع تاپیک .

ولی خوب حذف نکردیم ...

همیشه با جستجو در سایت میتونید برای سوال هاتون ، جواب های کاملی پیدا کنید ، پس همیشه قبل

از ایجاد تاپیک از ابزار جستجو استفاده کنید .



(اين تاييپك راخودم حذف خواهم كرد)


دوست عزیز ، وقتی کاربرانی به سوال شما پاسخ میدهند ، تاپیک شما دیگر نباید حذف شود ، چون

هدف این نیست که ما فقط به پاسخ سوالهای خودمون برسیم و بعد از اون تاپیک رو حذف کنیم ، چون اون

وقت این میشه استفاده شخصی ، در صورتی که این سایت و این تالار از آن همه کاربران سایت برنامه نویس

است و همین سوال شما ممکن بعدا سوال کاربری دیگر باشد .

Iran58
دوشنبه 30 فروردین 1389, 13:26 عصر
سلام
دوتامشكل برايم پيش آمده
1)عدداعشاري كه واردمي كنيم نمي دانيم چندرقمي است (2،5و7رقم)كه بتوانيم درحلقه تعدادگردش رامحدودبه تعداداعشاركنيم(مثلااگرعدد3 2.658واردشدمتغييربفهمد تا3بارعمل موردنظرراانجام دهد)
2)اگرfرابرابر70.0002قراردهيم وiراهم4قراردهيم جواب مي شود0001.اين هم يك مشكل
لطف حل حل اين مشكلات بنده راكمك كنيد

amin1softco
دوشنبه 30 فروردین 1389, 16:44 عصر
این دقتی که شما مد نظرته باید متغیر رو از نوع double تعریف کنی نه float برای به دست آوردن طولش هم فکر کنم باید بیت ها رو ترجمه کنی یعنی استاندارد اعشاری که فکر کنم مانتیس و این ها بود بعد ببنی طولش چقدره ... کلا کار سختیه فکر کنم راه ساده تری باشه؟!؟!؟ یعنی اول تبدیلش کن به رشته و طول رشته رو بده به حلقه for یک همچین چیزی:



double f=70.0002;
cout<<int(f)<<".";
stringstream ff;
f-=int(f);
ff << f;
string fs=ff.str();

for(int i=0;i<fs.length()-2;i++){
f-=int(f);
f*=10;
cout<<int(f)%10;
}

hadi prog
دوشنبه 30 فروردین 1389, 23:53 عصر
سلام
شما باید بصورت زیر عمل کنید فرض کنید عدد شما a هست
;(x=int(a
xمقدار صحیح هست
;y=a-x
y حالا مقدار اعشاری عدد شما
موفق باشید

Iran58
سه شنبه 31 فروردین 1389, 10:48 صبح
این دقتی که شما مد نظرته باید متغیر رو از نوع double تعریف کنی نه float برای به دست آوردن طولش هم فکر کنم باید بیت ها رو ترجمه کنی یعنی استاندارد اعشاری که فکر کنم مانتیس و این ها بود بعد ببنی طولش چقدره ... کلا کار سختیه فکر کنم راه ساده تری باشه؟!؟!؟ یعنی اول تبدیلش کن به رشته و طول رشته رو بده به حلقه for یک همچین چیزی:



double f=70.0002;
cout<<int(f)<<".";
stringstream ff;
f-=int(f);
ff << f;
string fs=ff.str();

for(int i=0;i<fs.length()-2;i++){
f-=int(f);
f*=10;
cout<<int(f)%10;
}

سلام
در stringstream ff;, ff << f;
پيغام خطازيررخ مي دهد
undefinedsymbol'stringstream'
براي رفع مشكل چكاربايدكنم

Iran58
سه شنبه 31 فروردین 1389, 11:06 صبح
سلام
شما باید بصورت زیر عمل کنید فرض کنید عدد شما a هست
;(x=int(a
xمقدار صحیح هست
;y=a-x
y حالا مقدار اعشاری عدد شما
موفق باشید
سلام
مشكل من اينجاست كه اعدادبعدازاعشاررابدست بياورم
مثلا2.25
a=2
b=25

Salar Ashgi
سه شنبه 31 فروردین 1389, 14:59 عصر
کاربر Iran58 (http://barnamenevis.org/forum/member.php?u=82211) ، همیشه جستجو کنید ، تا هم وقتتان هدر نشود و هم زود به جواب برسید .

http://barnamenevis.org/forum/showthread.php?t=212761