Чтобы излишне не терять точность и не тратить лишнее время на вычисления, выведем рекуррентную формулу.
В задании не сказано точно, как определять условие окончания суммирования. Примем, что суммирование завершается, если очередной член ряда не может изменить накопленную сумму больше, чем на ε, т.е. |aₓ| ≤ ε.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var (ai1,eps,s,i):=(3/2,0.001,3/2,2); while true do begin var a:=3/(4*i-2)*ai1; if Abs(a)>eps then begin i+=1; s+=a; ai1:=a end else Break end; Writeln('S = ',s:0:3) end.
Замечание: можно здесь обойтись и без переменной translatedText в функции.
var translatedText:string; function translate(s:string):string; const gl:set of char= ['А','Е','Ё','И','О','У','Ы','Э','Ю','Я','а','е','ё','и','о','у','ы','э','ю','я']; zn:set of char=['.',',','-','!','?','"',':']; var i:integer; begin for i:=length(s) downto 1 do if s[i] in gl+zn then delete(s,i,1); while pos(' ',s)>0 do delete(s,pos(' ',s),1); translate:=s; translatedText:=s; end; begin translate('Удивительный факт, но текст на языке НЕРАЗБОРЧИВО оказывается довольно просто читать. Достаточно небольшой тренировки - и вы сможете это делать.'); writeln(translatedText); end.
Результат:двтльнй фкт н ткст н зк НРЗБРЧВ кзвтс двльн прст чтть Дсттчн нбльшй трнрвк в смжт т длть
В задании не сказано точно, как определять условие окончания суммирования. Примем, что суммирование завершается, если очередной член ряда не может изменить накопленную сумму больше, чем на ε, т.е.
|aₓ| ≤ ε.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017
// Внимание! Если программа не работает, обновите версию!
begin
var (ai1,eps,s,i):=(3/2,0.001,3/2,2);
while true do begin
var a:=3/(4*i-2)*ai1;
if Abs(a)>eps then begin i+=1; s+=a; ai1:=a end
else Break
end;
Writeln('S = ',s:0:3)
end.
Результат
S = 2.532
var translatedText:string;
function translate(s:string):string;
const
gl:set of char=
['А','Е','Ё','И','О','У','Ы','Э','Ю','Я','а','е','ё','и','о','у','ы','э','ю','я'];
zn:set of char=['.',',','-','!','?','"',':'];
var i:integer;
begin
for i:=length(s) downto 1 do
if s[i] in gl+zn then delete(s,i,1);
while pos(' ',s)>0 do delete(s,pos(' ',s),1);
translate:=s;
translatedText:=s;
end;
begin
translate('Удивительный факт, но текст на языке НЕРАЗБОРЧИВО оказывается довольно просто читать. Достаточно небольшой тренировки - и вы сможете это делать.');
writeln(translatedText);
end.
Результат:двтльнй фкт н ткст н зк НРЗБРЧВ кзвтс двльн прст чтть Дсттчн нбльшй трнрвк в смжт т длть