Нема, треба сам да си направиш. Или со претварање (кастирање):
Код:
int a = (int)pow((double)b, (double)ex);
int c = (int)sqrt((double)b);
Е сега за квадратен корен, дали ќе кастираш или сам ќе направиш треба да се внимава дали влезот е полн квадрат, па за да може да се врати цел број.
Ако правиш сам можи вака да ја направиш функцијата
int sqrtInt(int a, int * daliEPolnKvadrat);
Вториов параметар има улога на BOOL (ама во C нема bool, ако си во Ц++ тогаш има)
Kaj степен, треба да се провери дали експонентот е >= 0, оти ако е негативен имаме дропка (n^-ex = 1/n^ex)
Алгоритам за степен можи да биди онај линарен.
Код:
int powInt(int n, int ex)
{
int ret=1;
for(i=0; i<ex; i++)
{
ret *= n;
}
return ret;
}
Е сега има еден многу поефективен. Математички работи вака
x^n=x^(n/2)*x^(n/2) - за н парен или
x^n=x^(n/2)*x^(n/2) * x - за н непарен.
И така ова се повикува рекурзивно се дури н/2 не дојди 1.
Така за н = 8 би се извршиле само 3 множења, а не 8 како во првиот алгоритам. Кодот го има овде со
објаснувања (појди малку подолу го има кодот, кај for-от. погоре се објаснувања)
За корен, имам правено еднаш ама го правев за големи бројки (секоја цифра сместена во еден char) Треба малку измени за int. Ама како што реков треба да се кажи дали има полн квадрат. Можи подобро е да се користи готовата функција.