Метод половинного деления

301
10 июня 2017, 15:31

Помогите мне! У меня не вычисляет корень вообще

#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;
double MethodPolDel(double *a, double *b, double *epsilon) // описание функции
{
    double *c = new double; // c - середина отрезка, выделение под памяти под переменную типа double
    int count = 0; // объявление счетчика
    while (abs(*a - *b) >= *epsilon); // до тех пор пока выполняется условие |a - b| >= epsilon
    {
        count++; // счетчик инкрементируется
        *c = (*a + *b) / 2; // расчет середины отрезка [a,b]
        // функция расчета новых границ отрезка с помощью указателей
        if ((5*pow(cos(*a),2) - (2 / (sqrt(*a))) * ((5*pow(cos(*c),2) - (2 / (sqrt(*c)) <= 0))))) // для a и c
        {
            *b = *c; // новый отрезок [a, c]
        }
        else
        {
            *a = *c; // новый отрезок [c, b]
        }
    }
    return *c;
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"");
    int count = 0; // объявление счетчика
    cout << "Используя метод половинного деления, найти корень уравнения.\n" << endl;
    // выделение участков памяти под переменные с помощью указателей
    // [a,b] - отрезок поиска корня уравнения; epsilon - заданная точность
    double *a = new double;
    double *b = new double;
    double *epsilon = new double (0.000005);
    try
{
повтор:
    cout << "Левая граница отрезка, a = ";
    cin >> *a;
    cout << "Правая граница отрезка, b = ";
    cin >> *b;
    cout << "Точность расчетов = ";
    cin >> *epsilon;
    if(!(a > 0))
    {
    cout << "Ошибка при вводе!" << endl;
    cin.clear(); // Очистка потока
    cin.ignore(); // Игнорировние последнего введенного знака 
    goto повтор;
    }
}
    catch(...)
{
    cout << "Ошибка при вводе!" << endl;
}
    double x = MethodPolDel(a, b, epsilon); // вызов функции вычисления корня уравнения
    count++; // счетчик инкрементируется
    cout << "Корень уравнения x = " << x << endl;
    cout.precision(5);
    cout << "Количество итераций: " << count << endl;
    // освобождение выделенной памяти
    delete a;
    delete b;
    delete epsilon;
    system("pause");
    return 0;
}
READ ALSO
Preparing to Olympiads [требует правки]

Preparing to Olympiads [требует правки]

С чего следует начать подготовку у ACM? И какие ресурсы вы рекомендуете?

212
Сортировать вектор структур

Сортировать вектор структур

Отсортировать вектор по одному из полей, используя алгоритмы STLПо возможности использовать все перегрузки сортировки (фраза, которую я не понял)

220
С++, эффект кэширования [требует правки]

С++, эффект кэширования [требует правки]

Задание: Оценить эффект кэширования

183