Знаю что были такие темы, но мне они пока что не помогли
накатал код через бесконечный цикл с проверкой корректности условия, в теории должен работать, по факту - нет (не выводит конечный результат вычислений), т.е. после отжатия системной паузы не выводит ничего.
подскажите пожалуйста, где ошибка
Условия:
c=(a+b)/2
f(a)*f(c)<0, если да, то b=c, и заново c=(a+b)/2
f(b)*f(c)<0, если да, то a=c, и заново c=(a+b)/2
делаю до того момента, пока \l b-a \l >=e, где e=10^(-3)
как только l b-a l >e, делаю прерывание и вывод итогового результата вычисления
Аналогично попробовал реализовать через do while, итог такой же
накатал код через бесконечный цикл с проверкой корректности условия, в теории должен работать, по факту - нет (не выводит конечный результат вычислений), т.е. после отжатия системной паузы не выводит ничего.
подскажите пожалуйста, где ошибка
:
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(0, "");
int e;
float a, b, c, funcA, funcB, funcC;
e = 0, 001;
cout << "Введите А:";
cin >> a;
cout << "Введите В:";
cin >> b;
if (a*b < 0)
{
c = ((a + b) / 2);
cout << "С=" << c << endl;
}
else if (a*b >= 0)
{
cout << "Неверно заданы параметры" << endl;
}
system("pause");
funcA = 2*c - b;
funcB = 2 * c - a;
funcC = c;
int i = 0;
for (; ; ) {
if (fabs(b - a) >= e) {
if (funcA*funcC < 0) {
b = c;
c = (a + b) / 2;
}
else if (funcB*funcC < 0) {
a = c;
c = (a + b) / 2;
}
}
else if (fabs(b - a) < e) {
break;
cout << "Итог:" << (b - a) << endl;
system("pause");
}
}
return 0;
}
c=(a+b)/2
f(a)*f(c)<0, если да, то b=c, и заново c=(a+b)/2
f(b)*f(c)<0, если да, то a=c, и заново c=(a+b)/2
делаю до того момента, пока \l b-a \l >=e, где e=10^(-3)
как только l b-a l >e, делаю прерывание и вывод итогового результата вычисления
Аналогично попробовал реализовать через do while, итог такой же
:
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(0, "");
int e;
float a, b, c, funcA, funcB, funcC;
e = 0, 001;
cout << "Введите А:";
cin >> a;
cout << "Введите В:";
cin >> b;
if (a*b < 0)
{
c = ((a + b) / 2);
cout << "С=" << c << endl;
}
else if (a*b >= 0)
{
cout << "Неверно заданы параметры" << endl;
}
system("pause");
funcA = 2*c - b;
funcB = 2 * c - a;
funcC = c;
int i = 0;
//for (; ; )
do if (funcA*funcC < 0) {
b = c;
c = (a + b) / 2;
}
else if (funcB*funcC < 0) {
a = c;
c = (a + b) / 2;
}while (fabs(b - a) >= e);
/*while (fabs(b - a) < e)
//break;*/
cout << "Итог:" << (b - a) << endl;
system("pause");
return 0;
}