Сначала немного математики. О модуле тут смысла нет говорить, поскольку все an - суть положительные величины на интервале (0;1).
uses Crt;
function ai(n:integer):real; var i:integer; p:real; begin p:=1; for i:=n+1 to 2*n do p:=p*i; ai:=1/p end;
var i:integer; eps,s,an:real; begin ClrScr; Write('eps='); Read(eps); s:=0; i:=1; repeat an:=ai(i); if an>=eps then begin s:=s+an; Inc(i) end until an<eps; Writeln('s=',s); ReadKey end.
Тестовые решения: eps=0.07 s= 5.8333333333E-01
eps=0.000001 s= 5.9229647667E-01
eps=1e-8 s= 5.9229653448E-01
Для контроля результата можно отметить, что сумма первых 1000 членов ряда равна приблизительно 5.922965365Е-01
PascalABC.Net: procedure GetData(var a,b:longint; var k:char); { ввод исходных данных } begin Write('Введите через пробел натуральные границы диапазона: '); Readln(a,b); Write('Введите искомую цифру: '); Readln(k) end;
procedure Summa(a,b:longint;k:char;var s:longint); { подсчет суммы чисел из интервала [a,b], содержащих цифру k } var i:integer; ci:string; begin s:=0; for i:=a to b do begin Str(i,ci); if Pos(k,ci)>0 then s:=s+i end end;
var a,b,sum:longint; k:char; begin GetData(a,b,k); Summa(a,b,k,sum); Writeln('Сумма чисел, содержащих цифру ',k,' равна ',sum) end.
Тестовое решение: Введите через пробел натуральные границы диапазона: 50 150 Введите искомую цифру: 6 Сумма чисел, содержащих цифру 6 равна 1589
Я не понимаю зачем делать без ифа, то, что можно сделать с ифом, ну держи, коли так хочешь:
int a, b, c, d ;
cin >> a >> b >> c >> d;
for (int i = a ; i <= b ; i++)
i % d ? cout << i << " " : continue;