با سلام يك راهنمايي در مورد وارون يك عدد اعشاري ميخوام .برنامشو نمي خوام فقط راهنمايي.
Printable View
با سلام يك راهنمايي در مورد وارون يك عدد اعشاري ميخوام .برنامشو نمي خوام فقط راهنمايي.
اول از همه که بخش صحیح و اعشاری رو اول از هم جدا می کنیم
قسمت صحیح راحته ولی قسمت اعشاری رو تا اونجایی که من دیدم کار راحتی نیست.
(من اومدم اونو تا زمانی که اون عدد (همون اعشار مثلاً 0.2345) قسمت اعشارش برابر صفر نشده در ده ضرب کردم و ...
مشکلی که من دیدم این بود که با این کار می دیدم مثلاً داخل رقم دهم اعشار باز یه عدد دیگه می آد مثل اینکه عدد 0.2345 در اصل یه چیزی شبیه 0.234500000009999 باشه!!!
که تنها راه چاره هم اینه که باید تقریبی مشخص کرد تا به جواب مورد نظر برسیم
زحمت كشيدي مرسي.
سوالتون خیلی مبهمه
منظورتون از وارون کردن عدد اعشاری اینه که قسمت صحیح جدا و اعشاری جدا وارون بشه؟!
آیا شما راهی سراغ دارید برای چیزی که گفتم؟
یعنی 0.2345 بگیره و 2345 رو بده؟
خب اگر 123.456 رو گرفت خروجیش چی باشه؟!
فكر كنم باید بشه 456.321 !نقل قول:
خب اگر 123.456 رو گرفت خروجیش چی باشه؟!
یه سوال تو كتاب c هست كه متنش همینه ...
اعشاری رو نمیدونم
یعنی روش فکر نکردم :31:
ولی بدون اعشارش اینطوریه :
مثلا :
156 به 651
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
من یه ایده دارم، البته عملیش نکردم
عددمون رو اول به یه رشته تبدیل کنیم ، بعد رشته رو پیمایش کنیم تا به ممیز برسیم و اینجوری متوجه میشیم که رقم چندم اعشار داره و ممیز اون رو حذف کنیم و در رشته دیگه ای بریزیم
حالا رشته جدید رو به عدد تبدیل کنیم و طبق روابطی که بچه ها گفتن (البته الگوریتمش رو هم دارم) معکوس کنیم حالا دوباره کارایی رو که اول انجام دادیم رو انجام می دیم و ممیز رو سر جاش می ذاریم
فکر کنم عملی باشه....
برنامه اش رو بنویس ... منم فكر كنم عملی باشه ...
دو سال پیش من به همین روش حل کردم . الان برنامه شو ندارم وگرنه می ذاشتم .موفق باشین:10:نقل قول:
دوستان من ایده دارم اگر فکر میکنید عملیه دوستمون که برنامه رو لازم دارن شروع به نوشتنش کنن
فکر نکنم کد نویسیش سخت بشه مخصوصا تو سی....
چون تا جایی که من می دونم قرار دادن برنامه آماده خلاف قوانینه...
چه 654.321 و چه 456.123نقل قول:
خب اگر 123.456 رو گرفت خروجیش چی باشه؟!
خسته نباشی. خدا قوتنقل قول:
اعشاری رو نمیدونم
یعنی روش فکر نکردم
ولی بدون اعشارش اینطوریه :
مثلا :
156 به 651
چطوری به رشته تبدیلش کنیم؟نقل قول:
من یه ایده دارم، البته عملیش نکردم
عددمون رو اول به یه رشته تبدیل کنیم ، بعد رشته رو پیمایش کنیم تا به ممیز برسیم و اینجوری متوجه میشیم که رقم چندم اعشار داره و ممیز اون رو حذف کنیم و در رشته دیگه ای بریزیم
حالا رشته جدید رو به عدد تبدیل کنیم و طبق روابطی که بچه ها گفتن (البته الگوریتمش رو هم دارم) معکوس کنیم حالا دوباره کارایی رو که اول انجام دادیم رو انجام می دیم و ممیز رو سر جاش می ذاریم
فکر کنم عملی باشه....
با توابع آماده یا پیمایش و اضافه کردن کاراکتر معادل اون عدد به رشته؟
تابع آماده که ما نمی خوایم!
اگه با پیمایش که مشکل سر همین هست. اگه می شد به یه پیشمایش درست برسیم اصلاً نیازی به اوردن رشته نیست که
برای تبدیل رشته به عدد و بالعکس تابع آماده وجود دارهنقل قول:
چرا تابع آماده نمی خوای؟!
شما عدد رو نمی تونید پیمایش کنید ولی رشته رو که میشه پیمایش کرده
رشته ها آرایه ای از کاراکتر ها هستند ....
دقیقا مشکلتون رو متوجه نشدم کجاش بود
به نظر خودم که اجراییه...
اصاً کجای سوال نوشته از توابع آماده استفاده نکنین؟!
من واسه سوالی که توی ذهن خودم بود منظورمهنقل قول:
اینکه می گم تابع آماده نه به این خاطره که می خوام بدونم دلیل اینکه اینطوری می شه چیه و یه راه حل منطقی براش پیدا کنم
حتما راهی برای پیاده سازی توابع آماده هم هست.نقل قول:
پس اینکه از تابع آماده استفاده میکنیم دلیل بر این نمیشه که راه حل منطقی نباشه
به هر حال این اولین راه حلی بود که به ذهن من رسید حتما راههای بهتری هم وجود داره...
من به علت ذيق وقت فرصت نكردم زياد رو اين كد كاركنم
حالا گذاشم شايد بدرتون خورد
کد:#include <iostream>
#include <string>
using namespace std;
int main()
{
char Mahdi[256];
cout <<"Enter your number:";
int x = strlen(Mahdi);
for(int j=x;j<=x;j--)
cout <<Mahdi[j];
return 0;
}
ببخشیدا ولی زیادی مشکل داره ها....نقل قول:
اصلاً از ورودی چیزی نگرفته :دی
كد پست قبل رو تصحيح كردم هرچند اصلا از بعضيا...
کد:#include <iostream>
#include <string>
using namespace std;
int main()
{
char mahdi[256];
cout<<"Enter your number:";
cin.getline(mahdi,256);
int x = strlen(mahdi);
cout <<"is it good???\nyour number->\t";
for(int i=x;i<=x;i--)
{
if(mahdi[i] == mahdi[x+1])
break;
cout<<mahdi[i];
}
return 0;
}