Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
konstantusha
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 12
#1

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

24.02.2013, 22:30. Просмотров 338. Ответов 2
Метки нет (Все метки)

Нужно с помощью метода итераций уточнить корень уравнения 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос if выполняется, не смотря на условие (C++):

Не выполняется условие if - C++
Нужна помощь не работает 13-я строка. #include &lt;iostream&gt; #include &lt;stdafx.h&gt; double f(double ** a1, int l, int m) { int...

Не выполняется условие - C++
Код как таковой работает но единственное что не выводит так это ответ при нажатии 0 Как нажимаю на ноль он должен написать c=0 но он...

Не выполняется условие - C++
Условие задачи: На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке...

Не выполняется условие! - C++
Здравствуйте! подскажите пожалуйста по какой причине у меня может не выполняться условие проверки страны? void country(TEda * Start){ ...

Не выполняется условие - C++
При вводе единицы должно вывестись сообщение на экран, однако этого не происходит. MS Visual Studio #include &lt;cstdlib&gt; #include...

Не выполняется условие - C++
Если ввести в консольном приложении строку Terminator, то должно выполниться условие и выведется текст That's Right. Но оно почему-то не...

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

Добавлено через 1 минуту
предлагаю заменить break на return
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.02.2013, 23:49 #3
Цитата Сообщение от SummerRain Посмотреть сообщение
с помощью оператора break выход производится только из блока if
Наоборот.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2013, 23:49
Привет! Вот еще темы с ответами:

Не выполняется условие в цикле for - C++
Доброго времени суток. Почему не выполняется код в цикле for? #include &lt;iostream&gt; using namespace std; int main(){ for (int...

Не выполняется условие в while цикле - C++
Привет, пытаюсь протестировать код из книги, но у меня внезапно перестал правильно работать цикл. Вот такой код: #include...

Не выполняется условие вложенного цикла - C++
Отладчик показывает что не выполняется условие цикла по j. В чем косяк? /* Вывести простые числа в заданном диапазоне */ ...

Почему всегда выполняется условие? - C++
Здравствуйте, имеется код int main(int argc,char *argv) { clrscr(); if(argv != &quot;aaa&quot;) { printf(&quot;Error 2&quot;); ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru