1

Тема: Допоможіть записати вираз!

https://replace.org.ua/uploads/images/9488/befd15c0125e9d7ef2d4825974268b7f.png Я ще не вмію записувати такі вирази в мові С++, допоможіть будь ласка

2

Re: Допоможіть записати вираз!

А ви гадаєте, що якщо хтось це зробить за вас, то ви навчитеся? Перепишіть у рядок, і замініть корінь на степінь. До речі, піднесення до степеня в C/C++ - pow(основа, степінь). Результат покажіть.

3 Востаннє редагувалося koala (06.10.2019 18:18:45)

Re: Допоможіть записати вираз!

Будь ласка, поверніть до C/C++. ТС видається не безнадійним.

Подякували: leofun011

4

Re: Допоможіть записати вираз!

#include "StdAfx.h"
#include <iostream>
#include <math.h> 

int main()
{
    float x,y;
    int a;
    printf("x=");
    scanf_s("%f",&x);
    printf("y=");
    scanf_s("%f",&y);
    a=ceil(x+(pow(sqrt(x),5))/1+powf(sin(x+y),2)*(x+y));
    printf("Result=%f",a);
    return 0;

https://replace.org.ua/uploads/images/9488/9d40c405ef19691688a831ce3c020325.png
Ось те, що в мене вийшло і безпосередньо саме завдання, помилок ніяких не видає, але консоль закривається після введення Х і У

5 Востаннє редагувалося ReAl (06.10.2019 19:06:47)

Re: Допоможіть записати вираз!

Консоль закривається, бо програма добігає кінця і виходить.
Поставте перед return 0; виклик getchar();, тоді програма зупиниться, чекаючи вводу, і консоль залишатиметься.
Потім натиснете ENTER для завершення.

pow(sqrt(x),5)) це неправильно, але це вже не до C чи С++, а до математики.
Згадайте, у який степінь перетворюється корінь n-го степеня і почитайте опис функції pow()

Подякували: grinyuk309, koala, leofun013

6

Re: Допоможіть записати вираз!

#include "StdAfx.h"
#include <iostream>
#include <math.h> 

int main()
{
    float x,y;
    double a;
    printf("x=");
    scanf_s("%f",&x);
    printf("y=");
    scanf_s("%f",&y);
    a=ceil(x+(pow(x,1/5)))/1+powf(sin(x+y),2)*(x+y));
    printf("Result=%f",a);
    getchar();
    return 0;
}

Якось так?
Результат такий
x=2.3
y=3.4
Result=13.000000Press any key to continue . . .

7

Re: Допоможіть записати вираз!

1. Коли записуєте довгий дріб із операціями в числівнику та знаменнику в рядок, не забувайте про дужки
1+1
--- = (1+1)/(2+2), а не 1+1/1+2
2+2

2. Ви потрапили у відому пастку. Для цілих операндів операція ділення в C ціла, тобто результат буде округлено вниз. 1/5 == 0; 1.0/5.0 == 0.2.
3. Ніякого множення в знаменнику немає. Ви вже вчили синуси на математиці?
4. Нащо ви powf використовуєте? Маєте pow - то ним і користуйтеся.

8

Re: Допоможіть записати вираз!

А загалом із формулою хтось щось перемудрив. Значення sin змінюються від -1 до 1; в квадраті - від 0 до 1. Корінь 5 степеня будь-чого, більшого за 1, суттєво менший за саме число, а його ще й ділять на щось від 1 до 2. Тобто без особливої точності значення цієї формули буде близьким до x. Вас питають про старший біт; для 32-бітного беззнакового (unsigned int) він буде 0 для всіх чисел, менших за 2147483648, і 1 для більших. Тобто в першому наближенні можна спокійно замінити все це обчислення на порівняння x з 2147483648. Насправді точне значення для порівняння буде дещо відмінним і залежати від y; але корінь 5 степеня з 2147483648 - це приблизно 74. Для чисел, більших за 2147483722, там гарантовано 1, а менших за 2147483685 - гарантовано 0; перше число, яке я навів, як бачите, має 7 правильних знаків. Якщо ж питають за старший біт знакового числа, то в ньому якраз зберігається знак числа, який збігається зі знаком x.

Подякували: leofun011