s=(х1)+(х2)+(3х)+(х4х)+(хn)+0,0001
Program abc;
const
<span> n = 10;
</span>var
<span> m: array [1..n] of integer;
</span><span> i: integer;
</span>begin
<span> for i := 1 to n do
</span><span> begin</span><span> m[i] := sqr(i) - 1;
</span><span> writeln(m[i]);</span><span>
end;
</span><span>end.</span>
#include <cstdlib>#include <iostream>#include <iomanip>#include <cmath>
using namespace std;
int main(){ setlocale(0, ""); double x, y, a, b, xk, xn, dx; a = 1.4; b = 2.5; cout << "Ââåäèòå xn,xk, dx = " << endl; cin >> xn; cin >> xk; cin >> dx; x = xn; cout << "Tabl" << endl; cout << "+-----------+" << endl; cout << "¦ x ¦ y ¦" << endl; while (x <= xk) { y = (log10(a*x*x+b))/(a*x+1); cout << "+-----+-----¦" << endl; cout.setf(ios::fixed); cout.precision(3); cout << "¦" << x << "¦"<< y << "¦" << endl; x = x + dx; } cout << "+-----------+"; system("pause");}
Чтобы найти число разрядов числа находишь логарифм по основанию 10 от данного числа, обрезаешь целую часть и прибавляешь единицу.
trunc(log10(a)+1)
У трёхзначных чисел это значение будет равно трём.
1. Строим математическую модель
1+2+3+... - это арифметическая прогрессия с разностью d, равной единице и первым членом a₁=1.
Сумма n первых членов арифметической прогрессии может быть найдена по формуле S=(2a₁+d(n-1))*n/2.
В нашем случае формула упрощается: S = (2+1(n-1))n/2 = n(n+1)/2
По условию члены прогрессии суммируются, пока сумма не превысит 1000.
Тогда 0.5n(n+1)>1000
n(n+1)>2000; n²+n-2000>0
Найдем минимальное n, удовлетворяющее этому условию.
n²+n+2000=0; D=1+8000=8001; √D ≈ 89.4
n₁=0.5(-1-89.4) < 0 - не устраивает, поскольку n>1
n₂=0.5(-1+89.4) =44.2
Принимаем n=45.
Сумма составит 45(45+1)/2=1035, а последний член равен n, т.е .45
Непонятно, зачем нам составлять программу. Пусть для того, чтобы проверить наше решение, поэтому выберем другой алгоритм.
Будем последовательно наращивать сумму 1+2+3+4 до превышения ей значения 1000. Решение, что называется, "в лоб".
2. Блок-схема приведена во вложении.
3. Программа
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (s,i):=(0,1);
while true do begin
s+=i;
if s>1000 then begin
Writeln('S=',s,', последний член ',i);
exit
end;
i+=1
end
end.
<u>Результат</u>
S=1035, последний член 45