PDA

View Full Version : سوال: چگونگی محاسبه توان



hafez1
جمعه 22 اردیبهشت 1391, 18:04 عصر
این برنامه رو نوشتم فک کنم به خاطر اینکه برای توان از^ استفاده کردم خروجیش اشتباس.
چی جوری کدمو تغییر بدم؟؟


#include<iostream>

using namespace std;

//using"^"

int main()

{
long int number,num,tedadargham=0,r;

cout<<"please enter your number";

cin>>number;

num=number;

while(number!=0)

{
number=number/10;


tedadargham++;

}
while(num!=0)

{
r=num/(10^(tedadargham-1));

num=num%(10^(tedadargham-1));

tedadargham=tedadargham-1;

if(r!=0)
cout<<r;

}
return 0;
}

Ananas
جمعه 22 اردیبهشت 1391, 19:35 عصر
برای به توان رسوندن از تابع pow تو فایل math.h استفاده کن.

hafez1
جمعه 22 اردیبهشت 1391, 23:08 عصر
اگه همین جوری بنویسم pow که بهش گیر می ده.
مگه این تابع خودش به توان نمی رسونه؟
یا باید تابع رو توضیح بدیم؟

ASGGSA
جمعه 22 اردیبهشت 1391, 23:31 عصر
سلام.
برای به توان رساندن به این شکل استفاده کن:

z = pow(x, y);

یعنی x به توان y ریخته میشه توی z . خروجی و ورودی این تابع double است.

Ananas
شنبه 23 اردیبهشت 1391, 00:43 صبح
اگه همین جوری بنویسم pow که بهش گیر می ده.
مگه این تابع خودش به توان نمی رسونه؟
یا باید تابع رو توضیح بدیم؟
ممکمه ورودی شما از جنس int باشه که میتونی موقع استفاده از تابع تبدیل به double کنی مثال :

int x, y, z;
z = pow((double)x, ((double)y);

developing
یک شنبه 24 اردیبهشت 1391, 12:38 عصر
با سلام

در نوع تبدیلات پویا (dynamic type casting) همیشه می توان از نوع کوچکتر در پارامترهایی که نوع بزرگتری هستند استفاده کرد و نیازی به تبدیل صریح نیست یعنی نوع int را می توان به جای نوع double استفاده کرد.
البته این مطلبی هم که Ananas (http://barnamenevis.org/member.php?233990-Ananas) گفتند درست هست ولی باید یادتون باشه که در تبدیل بالا یک خطا رخ خواهد داد و اون هم اینکه متغیر سمت چپ تساوی باید از نوع double باشد تا بتوان توان دو عدد اعشاری را داخل آن ذخیره نمود. یعنی:
int x, y;
double z;
z = pow((double)x, (double)y);

obaid1372
یک شنبه 24 اردیبهشت 1391, 13:02 عصر
یه راه دیگه ای هم هست ! استفاده از کد زیر !
int x , y ;
double z ;
z = pow(static_cast<float>(x) , static_cast<float>(y));