نشان دادن 2 عدد و تبدیل آن به کسر
سلام دوستان.
می خوام برنامه ای بنویسم که 2 عدد صحیح رو بگیره و نسبت آنها رو به اعشاری بنویسه! این نسبت هم همیشه بزرگتر یا مساوی یک باشه.
منظورش اینه که 2 عدد رو بگیره و اون رو بصورت کسری نشون بده به طوری که عدد بزرگتر توی صورت کسر قرار بگیره!
من تا اینجا کار کردم روش! ولی a و b رو نشون میده! دقیقا نمی دونم چی رو به چی باید نسبت بدم! برای نشون دادن کسر در سی چیکار باید کنیم؟
int a,b;
cout << "insert number";
cin >> a >> b;
if (a>b)
cout << "a/b";
else if (a<b)
cout<< "b/a";
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
سلام.
مشکلی که در برنامه ی شما هست، این هست که شما a و b رو هم در "" قرار دادید! بنابراین std::cout هم 'a' و 'b' رو چاپ خواهد کرد و نه مقدار ذخیره شده در متغیر های a و b.
برای اینکه مقدار یک متغیر رو در C++ به وسیله ی cout چاپ کنید باید اون رو در خارج از "" قرار بدید. مثلا:
int myAge = 17;
cout<<"My age is"<<myAge;
در کد بالا، مقدار دخیره شده در متغیر myAge برابر 17 است. و خروجی برنامه برابر با : My age is 17 هست.
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
شرطتون هم کامل نیست.در صورت تساوی دو عدد هم باید یکی از اون دو تا کسر چاپ بشن.
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
نقل قول:
نوشته شده توسط
amirtork
سلام.
مشکلی که در برنامه ی شما هست، این هست که شما a و b رو هم در "" قرار دادید! بنابراین std::cout هم 'a' و 'b' رو چاپ خواهد کرد و نه مقدار ذخیره شده در
متغیر های a و b.
برای اینکه مقدار یک متغیر رو در C++ به وسیله ی cout چاپ کنید باید اون رو در خارج از "" قرار بدید. مثلا:
int myAge = 17;
cout<<"My age is"<<myAge;
در کد بالا، مقدار دخیره شده در متغیر myAge برابر 17 است. و خروجی برنامه برابر با : My age is 17 هست.
عذر خواهی می کنم سی++ این علامت رو "/" تقسیم حساب می کنه و کسری برام نشون نمی ده و میاد دو عدد رو تقسیم می کنه!
نقل قول:
نوشته شده توسط
ehsan_faal
شرطتون هم کامل نیست.در صورت تساوی دو عدد هم باید یکی از اون دو تا کسر چاپ بشن.
بله. درسته ولی فعلا مشکل بالا ایجاد شده!
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
برای نمایش اعشاری باید بدونید که تقسیمی که دو تا عملوندش int باشن یه int بر میگردونه.
اگه مقدار عددیش رو میخواید اینجوری بنویسید:
if(a>b)
cout<<a<<"/"<<b<<"="<<static_cast<double>(a)/b<<endl;
else if(b>a)
cout<<b<<"/"<<a<<"="<<static_cast<double>(b)/a<<endl;
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
نقل قول:
نوشته شده توسط
forogh68
عذر خواهی می کنم سی++ این علامت رو "/" تقسیم حساب می کنه و کسری برام نشون نمی ده و میاد دو عدد رو تقسیم می کنه!
بله. درسته ولی فعلا مشکل بالا ایجاد شده!
بله :-) سی پلاس پلاس به طور پیشفرض / رو به عنوان عملگر تقسیم میشناسه، اما همونطور هم که در بالا اشاره کردم، مشکل شما این هست که 'a' و 'b' رو هم در "" قرار دادید، / باید در "" قرار میگرفت، کاری به اون نداشتم.
کدی هم که جناب آقای ehsan_faal قرار دادن خیلی کامله، اما یه تیکه کوچیک در حد یک کاراکتر رو فراموش کردن قرار بدن که اون هم = هست، برای یکی از شرط های if در بالا در کنار > یا < یک = قرار بدید تا در صورت برابری دو متغیر هم، کسر رو نمایش بده.
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
آخه خودشون گفتن توی این کد مساوی مشکلی ایجاد نمیکنه ،گفتم شاید میخوان حالت تساوی رو ignore کنن.
Thanks bro:تشویق:
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
نقل قول:
نوشته شده توسط
ehsan_faal
برای نمایش اعشاری باید بدونید که تقسیمی که دو تا عملوندش int باشن یه int بر میگردونه.
اگه مقدار عددیش رو میخواید اینجوری بنویسید:
if(a>b)
cout<<a<<"/"<<b<<"="<<static_cast<double>(a)/b<<endl;
else if(b>a)
cout<<b<<"/"<<a<<"="<<static_cast<double>(b)/a<<endl;
بله سپاسگذارم از زحمت شما و اون دوست محترم دیگرمون.
عذر می خوام میشه در خصوص این تیکه <<static_cast<double> کمی توضیح بفرمایید؟
نقل قول: نشان دادن 2 عدد و تبدیل آن به کسر
متن کتاب دایتل:
static_cast<double>(a)
عملگر قالب ریزی ای است که نسخه ای موقتی از عملوند خود (a) را ایجاد میکند.
مقداری که در a ذخیره شده هنوزم هم یک int است اما نسخه double آن در این تقسیم استفاده میشود.