Задача 1. Їдальня закуповує щодня масло та кг по 110 грн. за кілограм, сметану та кг по 35 грн. за кілограм, вершки m3 кг по 70 грн. за кілограм. Визначте суми, потрібні для купівлі окремих продуктів, і загальну суму.
Обычно решают на 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();
}
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