Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Язык Си Вычислить значения при x = 5.Предусмотреть ввод x с клавиатуры,

вр вр Ученик (149), закрыт 1 год назад
Лучший ответ
Ксения Райт Гений (85680) 1 год назад
 #include  
#include
int main()
{
double e=1.,x,z1,z2,z3,z4;
printf("x: ");
scanf("%lf", &x);
z1=(e+2.5*x)/((e-x)*x*x);
z2=sqrt(x*fabs(e-x)*sqrt(fabs(sin(x))))*cbrt(x*x+e);
z3=pow(sin(sqrt(x)), 3);
z4=exp(2.)+exp(tan(x));
printf("z1=%6.3f\nz2=%6.3f\nz3=%6.3f\nz4=%6.3f\n",z1,z2,z3,z4);
}
А что там у Вас с выражением для z4? В задании его нет, есть z5. У меня z4=exp(2)+exp(tg(x)), с ним вот что:
вр врУченик (149) 1 год назад
Спасибо большое
Ксения Райт Гений (85680) вр вр, пожалуйста!
ПапаВысший разум (121710) 1 год назад
pow(x, 3) работает примерно на порядок медленнее, чем x * x * x для вещественных x.
А вот ваш sqrt(sqrt(x)) - раза в 3 быстрее, чем pow(x, 1.0/4).
cbrt(x) ненамного быстрее, чем pow(x, 1.0/3), а иногда даже чуть медленнее.
ПапаВысший разум (121710) 1 год назад
А pow(sin(sqrt(x)), 3) работает даже медленнее, чем sin(sqrt(x))*sin(sqrt(x))*sin(sqrt(x)), и раза в 3 медленнее, чем вынесение sin(sqrt(x)) в промежуточную переменную.
Остальные ответы
Папа Высший разум (121710) 1 год назад
Примерно так:
 #include 
#include

int main()
{
printf("x = ");
double x;
scanf("%lf", &x);
double z1 = (1 + 2.5 * x) / (x * x * (1 - x));
printf("z1 = %.3lf\n", z1);
double z2 = sqrt(x) * sqrt(fabs(1 - x)) * pow((x * x + 1), 1.0/3) * pow(fabs(sin(x)), 1.0/4);
printf("z2 = %.3lf\n", z2);
double sinsqrtx = sin(sqrt(x));
double z3 = sinsqrtx * sinsqrtx * sinsqrtx;
printf("z3 = %.3lf\n", z3);
double z5 = exp(2) + exp(tan(x));
printf("z4 = %.3lf\n", z5);

return 0;
}
z5 или z4 всё-таки? Всю голову сломал, пытаясь определиться...
вр врУченик (149) 1 год назад
Да это просто опечатка в задании) Z4
вр врУченик (149) 1 год назад
Спасибо)
Похожие вопросы