Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 2

Проблема с поиском корня заданой функции ( с использованием функции типа void с параметрами массива)

06.12.2018, 20:31. Показов 941. Ответов 1

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Суть задания в том, что используя только функцию типа void в параметрах которой указан массив ( внутри которого находятся входные данные ), найти корень функции на заданном интервале(метод дихотомии) с вводимой точностью . Сама проблема появляется при выводе корня : его значение совершенно неверно. Нужно исправить код так, чтобы выводился правильный ответ. Заранее благодарю
P.S Сама функция : https://www.google.com.ua/sear... 8&oe=UTF-8
P.S.S Запись выходных данных можно осуществлять как в массив, так и без него.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "pch.h"
#include <iostream> 
#include <cmath> 
#include <locale>
using namespace std;
 
double f(double x)
{
    return 29.7*pow(x, 2)*sin(x) + 1;
}
 
void ans(double a[])// проблемная функция
{
    a[3] = (a[0] + a[1]) / 2;
    if (a[1] - a[0] > a[2])
        if (f(a[1])*f(a[3]) < 0)
            a[0] = a[3];
        else
            a[1] = a[3];
}
// код на поиск максимума, к данной теме значения не имеет
/*double maxf(double st, double fin, double e)
{
    double mid;
    while (abs(fin - st) > e) {
        mid = (st + fin) / 2;
        double f1 = mid - e, f2 = mid + e;
        if (f1 < f2)
            st = mid;
        else
            fin = mid;
    }
    return mid;
}
double maxf2(double st, double fin, double e)
{
    double mid;
    while (abs(fin - st) > e) {
        mid = (st + fin) / 2;
        double f1 = mid + e, f2 = mid - e;
        if (f1 < f2)
            st = mid
        else
            fin = mid;
    }
    return mid;
}*/
    int main()
    {
        setlocale(LC_ALL, "RUS");
        const int n = 5;// взято 5 ячеек для записи корня и в последующем максимума функции 
        double a[n];
        bool w1 = true;
        int w3;
        while (w1) {
            bool w2 = true;
            cout << "*** Лабораторная работа №4 ***\n Разработка функций средствами языка С++" << endl;
            cout << "Enter interval(a->b) & accuracy(ep): ";
            for (int i = 0; i < n - 2; i++)
                cin >> a[i];
            while (a[2] <= 0) {
                cout << "Incorrect number ep (ep>0). Re-enter ep ->";
                cin >> a[2];
            }
            if (f(a[0])*f(a[1]) < 0) {
                cout << "Root: " << a[3] << endl;
                /*if (f(maxf(a, b, ep) < 0))
                    cout << "Максимальное значение: " << f(maxf2(a, b, ep)) << endl;
                else
                    cout << "Максимальное значение: " << f(maxf(a, b, ep)) << endl;*/
            }
            else
                cout << "Error" << endl;
 
            //Код непрерывной работы программы
 
            while (w2) {
                cout << "The work of program is over. Any number - countinue. 0 - end ->";
                cin >> w3;
                if (w3 == 0) {
                    w2 = false;
                    w1 = false;
                    cout << "Closing..." << endl;
                }
                else {
                    w2 = false;
                    system("cls");
                }
            }
        }
    }
Миниатюры
Проблема с поиском корня заданой функции ( с использованием функции типа void с параметрами массива)  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2018, 20:31
Ответы с готовыми решениями:

Вычисление кубического корня с использованием функции с параметрами и возвращаемым значением
Составьте программу для вычисления кубического корня из произвольного числа arg, вводимого пользователем с экрана. Вычисление...

Функции ввода и вывода массива произвольного типа через void
Функции ввода и вывода массива произвольного типа через void нету разницы какие данные главное правильный код помогите очень нужно,...

Функции типа void
Добрый вечер, у меня есть проблема, которую я не могу решить. Есть функция типа void. Суть этой функции в том, чтобы печетать некие...

1
0 / 0 / 0
Регистрация: 06.12.2018
Сообщений: 2
07.12.2018, 03:21  [ТС]
Тема закрыта
Краткое решение :
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
#include "pch.h"
#include <iostream> 
#include <cmath> 
#include <locale>
using namespace std;
 
double f(double x)// функция задачи 
{
    return 29.7*pow(x, 2)*sin(x) + 1;
}
 
void ans(double a[])//поиск корня 
{
 
    while (a[1] - a[0] > a[2]) {
        a[3] = (a[0] + a[1]) / 2;
        if (f(a[1])*f(a[3]) < 0)
            a[0] = a[3];
        else
            a[1] = a[3];
    }
    cout << (a[0] + a[1]) / 2 << endl;
}
int main()
{
    setlocale(LC_ALL, "RUS");
    double arr[4] = { 8,10,0.01,0 };
    ans(arr);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2018, 03:21
Помогаю со студенческими работами здесь

Инициализация двумерного массива в функции типа void
void input(int *n, int *m); void initializatoin_remember(int ***rememberX, int n); int main() { int n, m; int...

Ошибка с инициализацией двумерного массива в функции типа void
void initializatoin_remember(int ***rememberX, int n); int main() { int **rememberX; } void initializatoin_remember(int...

Как вводить функции типа void
прошу помощи я полнейший ноль в программировании а в универе ездят этими прогами хоть и не по профилю совсем задание такое вот есть...

Указатель типа void на функцию, вызов функции
Необходимо с помощью указателя типа void запустить функцию. void func(int); int main(){ void *ptr_void; ptr_void=&amp;func; ...

Аналог break для функции типа void
надо сделать так , на месте break функция ничего не сделала void push(Stack *tmp, int element) { Stack *curr, *prev; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru