Здравствуйте, Аноним, Вы писали:
А>Калькулятор виндовса может возвести 10 в степень 4,5. А как это запрограммировать на С? А>... А>Подскажите пожалуста как правильно вычислять такое?
Крайне рекомендую почитать для начала, какие вообще операторы есть в языке Си и для чего они предназначены.
А>Подскажите пожалуста как правильно вычислять такое?
Про pow уже написали. Про то, что ^ — это битовый оператор, тоже написали.
От себя добавлю, что возводить в дробные степени на мой вкус не очень красиво. Лучше возводить в натуральные степени, а дробную часть заменять соответствуюшими корнями.
Здравствуйте, Аноним, Вы писали:
А>Калькулятор виндовса может возвести 10 в степень 4,5. А как это запрограммировать на С?
А>пишу следуюзим образом:
А>double stepen = 4.5.
А>double result = 10 ^ stepen;
А>получаю ошибку ILLEGAL use of floating point.
А>Подскажите пожалуста как правильно вычислять такое?
Здравствуйте, Аноним, Вы писали:
А>Калькулятор виндовса может возвести 10 в степень 4,5. А как это запрограммировать на С?
А>пишу следуюзим образом:
А>double stepen = 4.5.
А>double result = 10 ^ stepen;
А>получаю ошибку ILLEGAL use of floating point.
А>Подскажите пожалуста как правильно вычислять такое?
Вот еще один вариант
#include <math.h>
class Stepen
{
friend int main();
double v;
Stepen(double v) : v(v) {}
double operator^(double stepen) {
return pow(v,stepen);
}
}
int main() { Stepen s(4.5); double result = s ^ 10; return 0; }
А>double result = 10 ^ stepen;
А>получаю ошибку ILLEGAL use of floating point.
А>Подскажите пожалуста как правильно вычислять такое?
правильно вот так:
__int64 w = 10 ^ 4674421616599862384; // показатель степени домножен на поправочный множитель для компенсации недоразвитости языка С
printf("%g", *(double*)&w);
Здравствуйте, Deprivator, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>double result = 10 ^ stepen;
А>>получаю ошибку ILLEGAL use of floating point.
А>>Подскажите пожалуста как правильно вычислять такое?
D>правильно вот так:
D>__int64 w = 10 ^ 4674421616599862384; // показатель степени домножен на поправочный множитель для компенсации недоразвитости языка С D>printf("%g", *(double*)&w);
Здравствуйте, ДимДимыч, Вы писали:
ДД>Здравствуйте, Аноним, Вы писали:
А>>double stepen = 4.5. А>>double result = 10 ^ stepen;
ДД>10^N — это "1" и N нулей. 10^4,5 — это "1" и 4 с половиной нуля. ДД>10^4,5 = 10000⁰.
Но ведь 10000⁰ = 1, верно? А значит и 10^(4.5) = 1
Здравствуйте, pvirk, Вы писали:
P>Здравствуйте, licedey, Вы писали:
L>>Вот еще один вариант L>>#include <math.h> L>>class Stepen L>>{ L>> friend int main(); L>> double v; L>> Stepen(double v) : v(v) {} L>> double operator^(double stepen) { L>> return pow(v,stepen); L>> } L>>} L>>int main() { Stepen s(4.5); double result = s ^ 10; return 0; }
P>Делать main френдом класса, чтобы не писать public? Месье знает толк в извращениях.
Зато ТС может узнать для себя много нового, копая этот код (тешу себя надеждой)