# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C > سوال: بدست آوردن توان اعداد در C

## armin90

سلام
کسی می دونه چطوری میشه توان اعداد رو در C بدست آورد؟(تابع داره؟ یا اینکه باید بنویسیم؟)
مثلآ اگه بخوام :3 ^ 2 رو بدست بیارم چیکار کنم؟

----------


## Nima_NF

با توجه به نسخه کامپایلر خود از کتابخانه math.h یا cmath و تابع pow استفاده کنید:

#include <stdio.h>
#include <math.h>
// or #include <cmath>

int main ()
{
  double  x;

  x = pow (2,3);  // 2^3
 // other codes
  return 0;
}

----------


## Special

حالا اگه بخوایم توان یک عدد اعشاری باشه از چه تابعی باید استفاده بشه؟
چون این تابعی که نوشتید برای توان صفر ، منفی و غیر صحیح جواب نمیده و مبنا هم نمیتونه صفر یا منفی باشه..
با توان اعشاری چیکار باید کرد؟
 :ناراحت:

----------


## Salar Ashgi

تابع pow موجود در فایل کتابخانه ای math.h فقط برای توانهای صحیح جواب میده و برای توانهای اعشاری 

(همانطور که قبلا هم این موضوع بررسی شده ) باید از بسط تابع نمایی و ویژگی تابع لگاریتم استفاده کرد .

موفق باشید .

----------


## Special

ممنون میشم اگه توضیح بدید چه جوری میتونم این کارو انجام بدم.
بازم ممنون.

----------


## rroona

> ممنون میشم اگه توضیح بدید چه جوری میتونم این کارو انجام بدم.
> بازم ممنون.


میتونی از یه forبرای بدست اوردن مثلاa^p استفاده کنی

double i,a,p,m=1;
cin>>a>>p;
for(i=1;i<=p;i++)
m*=a;
cout<<endl<<m;

----------


## Special

> میتونی از یه forبرای بدست اوردن مثلاa^p استفاده کنی
> 
> double i,a,p,m=1;
> cin>>a>>p;
> for(i=1;i<=p;i++)
> m*=a;
> cout<<endl<<m;


فکر کنم منظور من رو متوجه نشدید..!!
عرض کردم توان  یک عدد اعشاری ی.
چطوری با حلقه ی For میشه مثلا 2.7 یا 3.9 بار چرخید؟

----------


## Salar Ashgi

روش معمولش استفاده از فرمول زیر و بسط مک لورن تابع f(x) = e^x میباشد :

فرمول مورد نظر :


a ^ b = e^(b*Ln(a))


بسط مک لورن تابع نمایی هم توی اکثر کتابای حساب دیفرانسیل پیدا میشه .

موفق باشید .

----------


## #somayeh#

ببخشیدمن این کد رو تو  C++‎ زدم جواب نداد!اگه بخوایم تو C++‎ از تابع توان  استفاده کنیم باید چکار کنیم؟کامپایلرم هم visual studio 2010 هستممنون می شم اگه کسی منو راهنمایی کنه

----------


## sara_93

سلام ...
می خواستم بدونم چه طوری میشه با وارد کردن یه عدد مثل x توان های فرد عدد رو چاپ کرد؟
می خوام بدونم چه طوری توان رو بدم؟ 
مرسی

----------


## Ananas

سلام.
تابع pow که تو فایل math.h هست برای اعداد اعشاری هم جواب میده هم پایه اعشاری باشه و هم توان. اگرم خوتون خواستید تعریف کنید به این شکله :

#include <math.h>
long double PowerReal(const long double Base, const long double Exponent)
{
    return (expl(Exponent * logl(Base)));
}

دقت کنید اعداد منفی رو نمیتونیم با این روش به توان اعشاری برسونیم چون لگاریتم برای اعداد منفی تعریف نشده هست یعنی اینجا: log(base)i ارور میده. اعداد منفی رو به توان اعداد صحیح میشه رسوند که باید از ضرب استفاده کنی و فرمولشو بنویسی.

----------


## fariba-2

در مورد نسخه کامپایلر گفتین. الان کامپایلر من dev4.9.2 یعنی خیلی قدیمیه؟ آخه حتی بعد از اینکه برنامه run هم میشه هنوز داره اون پایین خطا میگیره.
با تشکر فریبا

----------


## UfnCod3r

DevCPP خودش IDE هست کامپیلرش MinGW یا همون GCC ویندوزیه !
DevCPP اصلا محیط خوبی برا کد نویسی نیست !
اگه تو ویندوز هستین که بهتره از VS2010 استفاده کنید ! اگه وی اس نخواستید از CodeBlock استفاده کنید . اینطوری هم راحت تر میشید هم کار سریع تر پیش میره !
میل خودتونه 
با تشکر 
من

----------


## mmohadese

salam man mitonam ye codi ke neveshtam doros ejra nemisharo inja bezaram eshkalesho behem begid?

----------


## مسعود اقدسی فام

> salam man mitonam ye codi ke neveshtam doros ejra nemisharo inja bezaram eshkalesho behem begid?


البته. این تالار برای همینه که اشکال برنامه‌نویسی همدیگه رو بررسی و رفع کنیم و چیزای جدید هم یاد بگیریم.

----------

