Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 14:50   #1
konstantusha
 
Регистрация: 30.09.2012
Сообщений: 8
По умолчанию Проблема с проверкой условия с++

День добрый! Суть задачи такая: решить нелинейное уравнение с помощью метода простых итераций. Проблема возникла при проверке условия в теле функции, которая описывает метод: если последующее значение х не выходит за рамки промежутка, все равно выполняется заход в тело цикла. Объясните, пожалуйста, в чем ошибка. Заранее спасибо.

Код:
#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);
		shagi++;
		std::cout << std::fixed<<"шаг №"<<shagi<<" "<<"x =
"<<x0<<std::endl;
		if((b<x0)||(a>x0))
		{
			cout<<" Новое значение х выходит за указанный промежуток.Введите новый промежуток"<<endl;
			break;
		}
		
		
	}
	while((fabs(x1-x0)>e)&&(shagi<maxshagi));
	//shagi=0;
	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;
	cout<<"Ввод данных для уравнения"<<endl;
	cout<<"Введите границы промежутка: "<<endl;
	cout<<"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");
}
konstantusha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с проверкой условия посредством repeat until Zis67 Общие вопросы Delphi 3 01.10.2012 00:58
Проблема с проверкой строки :( Ksy C# (си шарп) 4 15.05.2011 22:58
массивы, проблема с проверкой значения элемента drago3-28 Паскаль, Turbo Pascal, PascalABC.NET 1 28.04.2011 20:42
Проблема с проверкой по списку, который зависит от условия jlobster Microsoft Office Excel 2 24.12.2009 21:41
как реализовать построковый переход с проверкой условия grom_nv Microsoft Office Excel 0 03.04.2009 07:31