PDA

View Full Version : سوال: در مورد جدا قسمت اعشاری و عدد صحیح15.50==>15==<50



behroz1992
شنبه 16 مرداد 1389, 13:02 عصر
سلام به همه ی دوستان عزیز من تازه C++‎ رو شروع کردم حالا میخوام کدی بنویسم که این ورودی اعشاری داشته باشه مثل این»»15.50 حالا میخوام این دوتا رو از هم جدا کنه مثل این 15 و بعد 50 رو چاپ کنه اینجا رو رفتم کمک کنید::

#include<iostream.h>
#include<conio.h>
int main()
{
float x;
cin>>x;
cout<<(int) x;
getch();
return 0;
}ممنون

Salar Ashgi
شنبه 16 مرداد 1389, 13:53 عصر
اول جستجو ، بعد ایجاد تاپیک !

http://www.barnamenevis.org/forum/showpost.php?p=944933&postcount=6

موفق باشید ./

behroz1992
شنبه 16 مرداد 1389, 15:32 عصر
ممنون مدیر عزیز این کد برای سنگین هست فکر کنم به وسیله تابع نوشته شده هست اگه میشه رو همین کد خودم راهنمایی کنید ببخشید:قلب:

Salar Ashgi
شنبه 16 مرداد 1389, 18:14 عصر
نه دوست عزیز ، سنگین نیست ! شما هر کجاشو مشکل دارین ، بگین تا توضیح بدم ! آخه کد شما کار
خاصی نمیکنه و فقط قسمت صحیح عدد رو پیدا میکنه !

khafan_bat
شنبه 16 مرداد 1389, 22:17 عصر
لینکی که سالار داد مربوط به برعکس کردن یک عدد اعشاری هستش. جدا کردن بخش صحیح که هیچ کاری نداره با توجه به این نکته که ریختن یک عدد اعشاری در متغیر لز نوع صحیح بخش اعشارش رو میزنه ، حالا اگه بخوای بدونی بخش صحیح تو چند رقم داره میتونی از تقسیم بر 10 کمک بگیری . این شد الگوریتم

اما برای اعشار این نکته رو بهت میگم که 123.00005 با 123 برابر نیست !! با توجه به این نکته یک الگوریتم باید طراحی کنی خروجی اون تعداد رقم های بخش اعشار عدد ورودی باشه ( یک متغیر فلوت رو با صحیح مقایسه کن همین میشه شرط while )

dominic programmer
شنبه 16 مرداد 1389, 22:45 عصر
با سلام
از تبدیلات ضمنی در ++c استفاده کنید همان static_cast
به این صورت که ابتدا یک متغیر صحیح تعریف کنید سپس عدد اعشاری مورد نظر را به وسیله static_cast به نوع صحیح تبدیل کرده سپس به متغیر صحیحی که تعریف کرده اید نسبت دهید و بعد متغیر دیگری از نوع اعشاری تعریف کنید و سپس عدد حاصل از تفریق بین عدد اعشاری مورد نظر و متغیر صحیح را به متغیر اعشاری نسبت دهید حال فرآیند جدا شدن دو قسمت انجام شده.

Salar Ashgi
یک شنبه 17 مرداد 1389, 00:06 صبح
لینکی که سالار داد مربوط به برعکس کردن یک عدد اعشاری هستش.


اول دو تا بخش اعشاری و صحیح پیدا میشن ، بعد عمل معکوس انجام میشه ! یعنی در واقع یه برنامه که هر
دوتا هدف رو پوشش میده ، هم جدا کردن بخش ها و هم معکوس چاپ کردنشان .

behroz1992
یک شنبه 17 مرداد 1389, 02:27 صبح
ممنونم دوستان
یه خدا خیلی فکر کردم نشد:ناراحت:

khafan_bat
یک شنبه 17 مرداد 1389, 04:18 صبح
اگه بخوایم بخش اعشار عدد مورد نظر رو در یک متغیر جدا داشته باشی کافیه یک متغیر float جدید بسازی و عدد اعشاری خودت رو از مقدار صحیح کم کنی ... ! به نظر تو چه چیزی باقی خواهد ماند ؟؟

1023-1023.56801 خوب حاصل میشه 0.56801 دیگه. حاصل تفریق رو بریزی تو یک متغیر از نوع اعشاری . تابع floor مقدار صحیح رو بر میگردونه.






float a1;
float a2;
cin>>a1;
a2=a1-floor(a1);
cout<<a2;

Salar Ashgi
یک شنبه 17 مرداد 1389, 10:48 صبح
مسیری که باید طی بشه اینه : بخش صحیح عدد خیلی ساده ، توسط تابع جزء صحیح بدست میاد ؛ میمونه
قسمت اعشاری : خوب اگه خود عدد منهای جزء صحیح رو پیدا کنیم میمونه قسمت اعشاری به همراه ممیز که
اگه بخوایم ممیز حذف بشه باید اونو در 10 به توان تعداد ارقام اعشار ضرب کنیم ! خوب پس باید یه متودی بنویسم واسه پیدا کردن تعداد ارقام اعشار !
==========================
روش دوم با رشته ها :



#include <iostream>
#include <conio>
#include <string>
using namespace std;
int main(){
string num;
while(true){
cout<<"Enter your float number :\n";
cin>>num;
int i = num.find(".");
string int_part = num.substr(0,i);
string float_part = num.substr(i+1,num.size()-i-1);
cout<<int_part<<" , "<<float_part<<endl;
cout<<"==============\n";}
getch();
}


http://www.barnamenevis.org/forum/attachment.php?attachmentid=53783&stc=1&d=1281250046

feree123
چهارشنبه 20 مرداد 1389, 09:10 صبح
سلام به همه ی دوستان عزیز من تازه C++‎‎‎ رو شروع کردم حالا میخوام کدی بنویسم که این ورودی اعشاری داشته باشه مثل این»»15.50 حالا میخوام این دوتا رو از هم جدا کنه مثل این 15 و بعد 50 رو چاپ کنه اینجا رو رفتم کمک کنید::

#include<iostream.h>
#include<conio.h>
int main()
{
float x;
cin>>x;
cout<<(int) x;
getch();
return 0;
}ممنون


فکر کنم این ساده ترین راه باشه



#include<iostream.h>
#include<stdio.h>
#include<conio.h>
int main (){
float a,c;
cin>>a;
int b;
b=a;
c=a-b;
cout<<"1="<<b<<endl;
cout<<"2="<<c;
getch ();
return 0;
}

Salar Ashgi
چهارشنبه 20 مرداد 1389, 18:13 عصر
فکر کنم این ساده ترین راه باشه


خروجی کد شما :

http://www.barnamenevis.org/forum/attachment.php?attachmentid=54001&stc=1&d=1281535960

دوست عزیز هدف از جدا کردن X.Y بدست آوردن X و Y بصورت دو عدد صحیح است !

andy_madadian
شنبه 23 مرداد 1389, 17:19 عصر
اين كار به اين سادگي كه فكر ميكنين نيست
چون كامپيوتر با يك دقتي اعداد اعشاري را ذخيره ميكنه
مثلا عدد 0.46 را كه مبخواهيم به 46 تبديل كنيم بايد اينقدر در 10 ضرب كنيم تا اعشاريش از بين بره
يعني:

0.46->4.6->46

يه حلقه while ساده است ولي زماني كه 0.46 را در 10 ضرب ميكنيم ممكنه جواب بشه: 4.599999999
حالا خر بيار باقالي بار كن
بايد عدد را گرد كنيم
از كجا معلوم كه عدد اصلي واقعا 0.45999999 نبوده كه ما گردش كنيم؟؟؟؟؟
براي راحت تر شدن اين مطلب كافيه در برنامه حداكثر تعداد رقم اعشار مشخص باشد
مثلا 3 رقم اعشار.

reza_lichking
پنج شنبه 11 آبان 1391, 23:26 عصر
آقا چطور میشه حداکثر تعداد اعشار رو مشخص کرد ؟
من یه برنامه نوشتم که میخوام اگر بیشتر عددی بیشتر از دو رقم اعشار داد ارور بده اما همین مشکل قبلیو میده یعنی مثلا برای بعضی اعداد مینویسه .289999 به جای .29