Тема: Не можу розібратися в чому помилка C++

Завдання полягає в тому, що мені дали математичний вираз і я його маю розвязати і написати код. Але мені вибиває помилка,
може хтось може мені помогти був би радий.
Помилку я написав нижче у коді.

#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Ukrainian");
    cout << "\n-----------Лабораторна робота №3-------" << endl;
    cout << "Програма для обчислення одного із значень функції на проміжку[-2;4]" << endl;
    cout << "---------------------------------------------------------------------" << endl << endl;
    //Оголошення змінних
    float x, y;
    //Ввід вхідних даних з консолі
    cout << "\tВведіть значення аргументу: \tx = ";
    cin >> x;

    //Обчислення значення функції 
    if ((x < -2) || (x > 4))           //перевіряємо ДОЗ функції
        cout << "\n\tНеможливо обчислити! Значення x виходить за межі інтервалу [-2;4]" << endl;

    else (тут пише що потрібен оператор)
    {
        else if ((x >= 0) && (x <= 4))
        {
            y = pow(2, x) - 1.25 * sin(sgrt(x));
            cout << "\n\tВиконалась перша умова!" << endl << endl;
        }
        else if ((x >= -2) && (x < -1))
        {
            y = pow(2, x + 1) + 1;
            cout << "\n\tВиконалась друга умова!" << endl << endl;
        }
        else if ((x >= -1) && (x < 0))
        {
            y = pow(x, 2) + 1;
            cout << "\n\tВиконалась третя умова!" << endl << endl;
        }
        cout << "\tЗначення функції: \t\t\y = " << y << endl;
    }
    while (!_kbhit());
    return 0;
}

2

Re: Не можу розібратися в чому помилка C++

Яка саме помилка?

3

Re: Не можу розібратися в чому помилка C++

Перед else if має бути спочатку просто if.

Подякували: leofun01, romanpylypiv142

4

Re: Не можу розібратися в чому помилка C++

тепер мені вибває, що індефікатор sgrt не определьон

else
{
    if ((x >= 0) && (x <= 4))
    {
        y = pow(2, x) - 1.25 * sin(sgrt(x));
        cout << "\n\tВиконалась перша умова!" << endl << endl;
    }

5

Re: Не можу розібратися в чому помилка C++

sqrt треба написати, а не sgrt. Бо скорочення походить від "square root", а не "sguare root".

Подякували: romanpylypiv14, leofun012

6

Re: Не можу розібратися в чому помилка C++

Дуже вам дякую за вашу допомогу і витрачений вами час. Я тепер зробив для себе висновок, що потрібно бути більш уважнішим при набиранні тексту. Ще раз дякую.

7

Re: Не можу розібратися в чому помилка C++

Бібліотека <math.h> належить до мови C, у C++ аналогічна бібліотека зветься <cmath>.
using namespace std; - це антипатерн. Тут щойно було питання, де воно створило проблему. Поки ви студент і пишете проєкти по одному файлу на 20 рядків, імовірність проблеми від цього, а тим більше складної, невисока; але врахуйте, що краще без нього.

if() {
}
else {
   if() {
   }
   else if() {
   }
}

можна трохи скоротити і зменшити кількість рівнів:

if() {
}
else if() {
}
else if() {
}

Складні порівняння на кшталт

 if ((x >= -2) && (x < -1))

мають дещо  кращий вигляд, якщо використовувати лише < (<=) і розставляти їх у порядку зростання:

 if ((-2 <= -x) && (x < -1))

Це більш схоже на математичний запис -2 ≤ x < -1.

pow(x,2) - це надмірність, просто x*x і коротше записується, і швидше працює, а читається так само.

Подякували: leofun01, romanpylypiv142

8

Re: Не можу розібратися в чому помилка C++

Я дуже вам вдячний, за таку пораду.

9

Re: Не можу розібратися в чому помилка C++

// filename.cpp

#include <iostream>
#include <cmath>
#include <windows.h>

using namespace std;

float f (float x);

int main()
{

    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "Ukrainian");
 
    cout << "----------------------Лабораторна робота №3------------------------" << endl;
    cout << "Програма для обчислення одного із значень функції на проміжку[-2;4]" << endl;
    cout << "-------------------------------------------------------------------" << endl << endl;
//     -2 <= x <= 4
//     | pow(2, x + 1) + 1, x < -1
// y = | pow(x, 2) + 1,     x <  0
//     | pow(2, x) - 1.25 * sin(sqrt(x)), x <= 4
//
  
    //Оголошення змінних
    float x, y;

    //Ввід вхідних даних з консолі
    cout << "Введіть значення аргументу:\tx = ";
    cin >> x;


    //Обчислення значення функції 
    
    if ((x < -2) || (x > 4))           //перевіряємо ДОЗ функції
        {
             cout << "Неможливо обчислити! Значення x виходить за межі інтервалу [-2;4]" << endl;
             return -1;
        } 

    cout << "Значення функції:\t\ty = " << f(x) << endl;

    return 0;
}

float f ( float x)
   {
    
        double y;

        if (x >= 0)
        {
            cout << "Виконалась перша умова!" << endl << endl;
            y = pow(2, x) - 1.25 * sin(sqrt(x));

        }
        else if (x < -1)
        {
            cout << "Виконалась друга умова!" << endl << endl;
            y = pow(2, x + 1) + 1;

        }
        else if (x >= -1)
        {
            cout << "Виконалась третя умова!" << endl << endl;
            y = pow(x, 2) + 1;

        }
    }
Подякували: romanpylypiv141

10 Востаннє редагувалося koala (08.10.2023 21:07:30)

Re: Не можу розібратися в чому помилка C++

ur_naz, а де це вас учили так фігурні дужки ставити - то за Олманом, то під GNU?
Ну і гарна порада вам - хоча б спробувати скомпілювати код перед тим, як викладати сюди. Бо якби ви скомпілювали б його, то помітили б, що забули return в f.

Подякували: romanpylypiv14, leofun012

11

Re: Не можу розібратися в чому помилка C++

воно не може розібратись, де помилка, якщо я напишу код без помилок, як воно розбереться?

12

Re: Не можу розібратися в чому помилка C++

ur_naz написав:

воно не може розібратись, де помилка, якщо я напишу код без помилок, як воно розбереться?

А вас саме так навчали, виключно на коді з помилками, щоб вчилися розбиратися? І чому ж не навчилися?

Подякували: romanpylypiv14, leofun012

13

Re: Не можу розібратися в чому помилка C++

хто сказав, що я не навчився?

14

Re: Не можу розібратися в чому помилка C++

ur_naz написав:

хто сказав, що я не навчився?

Ваш код кричить про це.

Подякували: romanpylypiv14, leofun012

15

Re: Не можу розібратися в чому помилка C++

де?

16

Re: Не можу розібратися в чому помилка C++

Кількома повідомленнями вище.

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