Форум программистов, компьютерный форум CyberForum.ru

Исключения (Exceptions) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Builder Найти сумму угловых элементов квадратной матрицы http://www.cyberforum.ru/cpp-beginners/thread139434.html
Доброго всем времени суток! Буду очень признателен, если если поможете с одной задачкой: Найти сумму угловых элементов квадратной матрицы и умножить ее на эту матрицу. Результат вывести в новую матрицу. int sum; for (int i=0; i<=StringGrid1->ColCount; i++) for (int j=0; j<=StringGrid1->ColCount; j++) { int a = StrToInt(StringGrid1->Cells);
C++ Курсовая Делая курсовую работу столкнулся с такой вот проблемой вот мейн у меня #include "DIMON.H" void main() { kurs kp; kp.menu(); kp.select(); } http://www.cyberforum.ru/cpp-beginners/thread139432.html
Магический квадрат C++
можно составить магический квадрат с первых 36 простых чисел? (сумма элементов которой в каждой срок, в каждом столбцы и по каждой Диагональ одинаковы)
Двусвязный список с++ простие числа C++
Здравствуйте форумчане! Помогите пожалуйста разобраться с двусвязным списком в с ++ Вот задача: программа для определения простых чисел, числа заполнить по такому алгоритму: сначала заполнить список числами от 1 и до какого n. Затем начиная с двойки проверять и удалять все числа которые делятся на нее, потом брать следующий элемент списка и делать аналогичную операцию, пока не будет чисел,...
C++ Представление матрицы графически http://www.cyberforum.ru/cpp-beginners/thread139417.html
Надо писать программу, трудности вызывает представление матрицы графически, если не сложно, прошу написать в паре слов как это происходит (код). хотя бы основы, в книжке как-то странно расписано... то есть у меня есть поле, скажем 10х10 и матрица (10х10 естественно) как связать их вместе?
C++ определить номер наименьшего по абсолютной величине элемента массива определить номер наименьшего по абсолютной величине элемента массива А на С++ подробнее

Показать сообщение отдельно
I_like_C++
14 / 14 / 1
Регистрация: 15.03.2010
Сообщений: 126
02.06.2010, 00:37     Исключения (Exceptions)
ПОмогите доделать прогу...хотя, честно говоря, она работает, но только вот если не будет одного "исключения" (http://www.cppreference.com/wiki/exception/start)

Задание:
Написать рекурсивную функцию для вычисления корня уравнения на некотором отрезке. Функция, реализуемая в задании, обязана выполнять проверку передаваемых параметров и генерировать исключение в случае ошибочных данных со спецификацией throw().Функция принимает в качестве параметров отрезок [xн , xк], на котором предположительно находится корень, коэффициенты уравнения а, b, с и точность eps.
Реализовать нужно с помощью метода "половинного деления отрезка" (и никаким другим)
про этот метод можно прочитать здесь
http://www.pm298.ru/pribl.php

сама функция вот: a-b*x=LOGc(x) (логарифм по основанию "с" от "х")

в приницпе я все так и сделал, но почему то у меня постоянно вылазиит вот это
"Взят отрезок, на котором метод неприменим" (f(x1,a,b,c)*(f(x2,a,b,c)>0)
но концы функции должны быть разных знаков, чтоб на этом отрезке был корень...как быть подскажите?))
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
#include <iostream>
#include <cmath>
using namespace std;
double f(double x, double a, double b, double c)
{
    //return log(x)/log(c)+b*x-a;
    return x-pow(c,a-b*x);
}
double root(double x1, double x2, double a, double b, double c, double eps)
{
    double xt=(x1+x2)/2;
    if(f(xt, a,b,c)>f(x1,a,b,c)) 
        x1=xt;
    else 
        x2=xt;
    if (abs(x2-x1)>eps)
        return root(x1,x2,a,b,c,eps);
    return xt;
}
int main()
{
    setlocale(0,"");
    cout<<"f(x,a,b,c) = ln(x)/ln(c) + b*x - a\n\n";
    double x1,x2,a,b,c,eps;
    try 
    {   
        cout<<"Введите коэффициенты уравнения a,b,c (через пробел) : "; 
        cin>>a>>b>>c;
        if (c<0 || c==1)
            throw("Неправильно заданы параметры");
        cout<<"Введите начало и конец отрезка [x1;x2](через пробел) : "; 
        cin>>x1>>x2;
        if (x1>x2 || x1<=0)
            throw("Неправильно задан промежуток");
        if (f(x1,a,b,c)*(f(x2,a,b,c)>0))
            throw("Взят отрезок, на котором метод неприменим");
        cout<<"Введите точность: "; 
        cin>>eps;
        if (eps<0)
            throw("Введена отрицательная точность");
        cout <<"Корень уравнения= "<<root(x1,x2,a,b,c,eps)<< endl;
    } 
    // обработка исключения
    catch( const char *s ) 
    {
        cout << s << endl; 
    }   
system ("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru