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

if выполняется, не смотря на условие - C++

Восстановить пароль Регистрация
 
konstantusha
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 12
24.02.2013, 22:30     if выполняется, не смотря на условие #1
Нужно с помощью метода итераций уточнить корень уравнения 1.8*x^4-sin(10*x)=0 на промежутке [0.5;0.75]. Возникла проблема при проверке условия в теле функции, которая описывает метод: если последующее значение х не выходит за рамки промежутка, все равно выполняется заход в тело цикла. Объясните, пожалуйста, в чем ошибка.
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
#include <iostream> 
#include <math.h>
 
int shagi,maxshagi;
double x_next,e,x_previous,a1,b1,a2,b2,x1;
 
using namespace std;
 
double iterations (int maxshagi, double e, double x0,int a,int b,double (*pf) (double))
{
    do
    {
                x1=x0;
        x0=pf(x0);
        std::cout << std::fixed<<"шаг №"<<shagi<<" "<<"x = "<<x0<<std::endl;
        shagi++;
        if((x0>b)||(x0<a))
        {
            cout<<"Новое значение х выходит за указанный промежуток"<<endl;
            break;
        }
    }
    while((fabs(x1-x0)>e)&&(shagi<maxshagi));
    return x1;
}
 
double uravnenie2(double x)
{
    return 1.8*x*x*x*x-sin(10*x)+x;
}
double proverka_uravnenie2(double x)
{
    return 1.8*x*x*x*x-sin(10*x);
}
 
 
void main()
{
    setlocale(LC_ALL,"rus");
        double proverka=0;
        сout<<"a2= ";
    cin>>a2;
    cout<<"b2= ";
    cin>>b2;
    cout<<"Введите точность = ";
    cin>>e;
    cout<<"Введите начальное х =";
    cin>>x_previous;
    cout<<"Введите максимальное количество шагов = ";
    cin>>maxshagi;
    
    double (*ukazfun2)(double);
    ukazfun2=uravnenie2;
    x_next=iterations(maxshagi,e,x_previous,a2,b2,ukazfun2);
    proverka=fabs(proverka_uravnenie2(x_next));
    cout<<"Уточненный корень х = "<<x_next<<endl;
    std::cout << std::fixed <<"Проверка: значение уравнения = "<< proverka << std::endl;*/
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 22:30     if выполняется, не смотря на условие
Посмотрите здесь:

C++ Не выполняется условие
C++ Не выполняется условие
C++ оооочень странно не выполняется условие
Не выполняется условие. Причина не ясна C++
C++ Не выполняется условие!
Не выполняется условие вложенного цикла C++
C++ Не выполняется условие. Деление с остатком
Почему всегда выполняется условие? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
24.02.2013, 23:39     if выполняется, не смотря на условие #2
с помощью оператора break выход производится только из блока if
C++
1
2
3
4
5
if((x0>b)||(x0<a))
        {
            cout<<"Новое значение х выходит за указанный промежуток"<<endl;
            break;
        }
но не из цикла do-while

Добавлено через 1 минуту
предлагаю заменить break на return
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.02.2013, 23:49     if выполняется, не смотря на условие #3
Цитата Сообщение от SummerRain Посмотреть сообщение
с помощью оператора break выход производится только из блока if
Наоборот.
Yandex
Объявления
24.02.2013, 23:49     if выполняется, не смотря на условие
Ответ Создать тему
Опции темы

Текущее время: 17:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru