Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 17.01.2021
Сообщений: 154

Вычислить значения интервально заданных функций

18.09.2021, 15:35. Показов 2337. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, столкнулся с такой проблемой , при попадании в первое условие, программа выдает значение Y всегда равное единице , с чем это может быть связано?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    double y, x;
    for (double a = 0, b = -2; a <= 5, b <= 4; a += 0.5, b += 0.1) {
        if (b < 0) {
            x = pow(a, 5) + 6 * b;
            cout << "a = " << a << ", b = "<< b << ", x = "<< x;
        }
        else if (b >= 0 && b <= 1.5 && a != b) {
            x = 23 * pow(a, 2) + ((45 * a) / (a - b));
            cout << "a = " << a << ", b = " << b << ", x = " << x;
        }
        else if (b > 1.5 && b < 2.5) {
            x = pow(a, 8) + 2 * b * pow(a, 2) + pow(b, 8);
            cout << "a = " << a << ", b = " << b << ", x = " << x;
        }
        else if (b >= 2.5) {
            x = pow(a, 4) - 9 * b + 21 * a * b;
            cout << "a = " << a << ", b = " << b << ", x = " << x;
        }
 
        if (x > 2.3) {
            y = pow(pow((a - 24), 26) - 45 * x, 1 / 25);
            cout << ", y = " << y << endl;
        }
        else if (x <= 2.3) {
            y = pow((a - pow(x, 2)) / 2, -23 / 21);
            cout << ", y = " << y << endl;
        }
    }
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.09.2021, 15:35
Ответы с готовыми решениями:

Вычислить значения функций при заданных параметрах
Ребята помогите решить две задачи с помощью С++ Первая задача: Код написал так, но почему то ответы не совпадают, в чём проблёма?...

Вычислить значения функций при заданных параметрах
Подскажите пожалуйста, как решить данную задачу на С++? Спасибо большое! 4.11 Картинки и любые другие файлы загружайте на...

Вычислить значение из заданных функций
Разработать программу, которая вычисляет значение одной из заданных функций в указанной точке Вид простейшего меню: Введите номер...

11
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
18.09.2021, 15:47
строка#8 for (double a = 0, b = -2; a <= 5, b <= 4; a += 0.5, b += 0.1)
Нельзя так ставить условие через запятую. Используйте && или ||.
1
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,268
18.09.2021, 15:51
Цитата Сообщение от Youngchi Посмотреть сообщение
C++
1
a <= 5,
- это условие не выполнится, не торопитесь так сильно.
1
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
18.09.2021, 15:53
Цитата Сообщение от Youngchi Посмотреть сообщение
b <= 1.5
Замечание. Вроде такое условие не выполнится правильно, так как числа с плавающей точкой не будут ровно 1.5. И по выводу с вашего кода видно, что а вышла за пределы и b не дошла до 4.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.09.2021, 16:01
Лучший ответ Сообщение было отмечено мама Стифлера как решение

Решение

Цитата Сообщение от Youngchi Посмотреть сообщение
y = pow(pow((a - 24), 26) - 45 * x, 1 / 25);
1/25=0 как результат целочисленного деления. любое число в нулевой степени это единица
2
1 / 1 / 0
Регистрация: 17.01.2021
Сообщений: 154
18.09.2021, 16:06  [ТС]
Yetty, А как тогда сделать корень n-ной степени ?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
18.09.2021, 16:07
Лучший ответ Сообщение было отмечено Youngchi как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <cmath>
using namespace std;
double x(double a,double b)
{
    if(b<0)return pow(a,5)+6.*b;
    if(b<=1.5)
    {
        if(a!=b)
            return 23.*a*a+45.*a/(a-b);
        return 0;
    }
    if(b<2.5)
        return pow(a,8)+2.*b*a*a+pow(b,8);
    return pow(a,4)-9.*b+21.*a*b;
}
double y(double a,double b)
{
    double xt=x(a,b);
    if(xt<=2.3)
    {
        double t=a-xt*xt/2.;
        if(t<0)return 0;
        if(t==0)return 1.;
        return pow(t,-23./21.);
    }else
    {
        double t=pow(a-24.,26)-45.*xt;
        if(t<0)return 0;
        if(t==0)return 1.;
        return pow(t,1./25.);
 
    }
}
int main()
{
    for(double a=0;a<=5.;a+=0.5)
    {
        for(double b=-2;b<=4.;b+=0.1)
        {
            cout<<a<<'\t'<<b<<'\t'<<x(a,b)<<'\t'<<y(a,b)<<endl;
        }
    }
    return 0;
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.09.2021, 16:17
zss, только добавить b=4 и обработать a=b
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
18.09.2021, 16:23
Цитата Сообщение от Yetty Посмотреть сообщение
обработать a=b
уже обработано
Цитата Сообщение от zss Посмотреть сообщение
if(a!=b)
а с b=4 не стоит ТС запутывать.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.09.2021, 16:51
а также малое число при сравнении здесь:
Цитата Сообщение от zss Посмотреть сообщение
if(t<0)return 0;
        if(t==0)return 1.;
Цитата Сообщение от zss Посмотреть сообщение
уже обработано
нет сообщения при выводе результата, выводит такие данные:

0 6.38378e-16 0 1
2.5 2.5 147.813 24.3073

Добавлено через 3 минуты
Цитата Сообщение от zss Посмотреть сообщение
с b=4 не стоит ТС запутывать
что значит запутывать ? значения при b=4 у Вас не вычисляются, хотя по условию должны быть просчитаны

Добавлено через 9 минут
кстати почему так:
Цитата Сообщение от zss Посмотреть сообщение
if(t<0)return 0;
если нечётный корень из отрицательного находится
1
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
18.09.2021, 16:53
Цитата Сообщение от Yetty Посмотреть сообщение
нечётный корень из отрицательного находится
Но мы используем функцию pow, а она считает через логарифм (т.е. для отрицательных значений не определена).

Цитата Сообщение от Yetty Посмотреть сообщение
нет сообщения при выводе результата
При написании вычислительных функций не стоит привлекать интерфейс ввода-вывода.
Нужно либо оговорить, что функция будет возвращать в исключительных ситуациях,
либо бросать исключение.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.09.2021, 18:07
Цитата Сообщение от zss Посмотреть сообщение
Но мы используем функцию pow, а она считает через логарифм (т.е. для отрицательных значений не определена
так можно же записать
C++
1
if(t<-eps) return -pow(-t,1./25.);
Добавлено через 38 минут
Цитата Сообщение от zss Посмотреть сообщение
не стоит привлекать интерфейс ввода-вывода
обрабатывать можно по-разному, в любом случае выводить как у Вас неправильно:
0 6.38378e-16 0 1
0.5 0.5 -3.3777e+16 0
1 1 -6.7554e+16 0
1.5 1.5 58.0078 25.4841
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2021, 18:07
Помогаю со студенческими работами здесь

Вычисление значения одной из заданных функций в заданной точке
Всем привет! Нужно написать программку на вычисление значения одной из заданных функций в точке, но незнаю с чего начать и чем закончить,...

Составить программу для вычисления значения функций U(x,y) при заданных значениях аргументов х и у
Здравствуйте форумчане!Помогите,пожалуйста Нужно составить программу для вычисления значения функций U(x,y) при заданных значениях...

Вычислить значения Х по формуле, найти значения функций от Х
Циклы с++ visual studio 10 исправить код Вычислить для первых 20 значений X=1/2, 1-2/3, 1-3/4,...и вывести в виде таблицы с...

Вычислить значения заданных функций
Вычислить значения заданных функций. Y=sin^3(x^2+a^2)-\sqrt{x/b} Z=x^2/a+cos(x+b)^3

Линейные алгоритмы. Вычислить значения заданных функций
Эти задачи предназначены для приобретения навыков реализации линейных алгоритмов. Вычислить значения заданных функций. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru