Преобразуем левую часть уравнения с использованием схемы Горнера:
PascalABC.Net function f(x: real): real; begin f := 5+x*(3+x*(2+x)); end;
var a, b, x, fa, fb, fx, eps: real;
begin Write('Введите через пробел границы интервала [a;b] и точность:'); Readln(a, b, eps); fa := f(a); if abs(fa) <= eps then Writeln('x=', a, ', y=', fa) else begin fb := f(b); if abs(fb) <= eps then Writeln('x=', b, ', y=', fb) else if fa * fb > 0 then Writeln('На указанном интервале корней нет') else repeat x := (a + b) / 2; fx := f(x); if abs(fx) <= eps then Writeln('x=', x, ', y=', fx) else if fa * fx > 0 then a := x else b := x; until abs(fx) <= eps end end.
Результат решения: Введите через пробел границы интервала [a;b] и точность:-2 -1 0.01 x=-1.84375, y=-9.1552734375E-05
Обычно решают на Pascal, но я напишу на C++, он мне роднее)). Я конечно немножко по-другому реализовал (в плане ввода значений), но поставленную задачу выполняет. 1) #include <stdio.h> #inlcude <conio.h> #include <iostream> using namespace std; int main() { long a, b, i, sum=0; cin>>a; // Вводишь число a cin>>b; // Вводишь число b for (i=a;i<=b;i++) { sum=sum+(i*i); } cout<<sum; // выводим сумму квадратов чисел _getch(); }
2) #include <stdio.h> #inlcude <conio.h> #include <iostream> using namespace std; int main() { long a,b,c,d,i; bool z=false; cin>>a; cin>>b; cin>>c; cin>>d; for (i=10000; i<=99999; i++) { if (i % a==b && i % c==d) {z=true; cout<<i<<" ";} } if (z==false) {cout<<"-1";} // Выводится если нет чисел _getch(); }
PascalABC.Net
function f(x: real): real;
begin
f := 5+x*(3+x*(2+x));
end;
var
a, b, x, fa, fb, fx, eps: real;
begin
Write('Введите через пробел границы интервала [a;b] и точность:');
Readln(a, b, eps);
fa := f(a);
if abs(fa) <= eps then Writeln('x=', a, ', y=', fa)
else begin
fb := f(b);
if abs(fb) <= eps then Writeln('x=', b, ', y=', fb)
else
if fa * fb > 0 then Writeln('На указанном интервале корней нет')
else
repeat
x := (a + b) / 2;
fx := f(x);
if abs(fx) <= eps then Writeln('x=', x, ', y=', fx)
else
if fa * fx > 0 then a := x else b := x;
until abs(fx) <= eps
end
end.
Результат решения:
Введите через пробел границы интервала [a;b] и точность:-2 -1 0.01
x=-1.84375, y=-9.1552734375E-05
1)
#include <stdio.h>
#inlcude <conio.h>
#include <iostream>
using namespace std;
int main()
{
long a, b, i, sum=0;
cin>>a; // Вводишь число a
cin>>b; // Вводишь число b
for (i=a;i<=b;i++)
{
sum=sum+(i*i);
}
cout<<sum; // выводим сумму квадратов чисел
_getch();
}
2)
#include <stdio.h>
#inlcude <conio.h>
#include <iostream>
using namespace std;
int main()
{
long a,b,c,d,i;
bool z=false;
cin>>a;
cin>>b;
cin>>c;
cin>>d;
for (i=10000; i<=99999; i++)
{
if (i % a==b && i % c==d) {z=true; cout<<i<<" ";}
}
if (z==false) {cout<<"-1";} // Выводится если нет чисел
_getch();
}