ИСПРАВЛЕНО --- Uses crt; {описание переменных} var a,b,c: array [1..20] of integer; x,sum:integer; begin sum:=0; {обнуляем сумму} for x:=1 to 20 do {включаем цикл ввода массивов} begin write('a[',x,']:'); {вывод текста на экран} readln(a[x]); {ввод массива А} write('b[',x,']:'); {вывод текста на экран} readln(b[x]); {ввод массива В} c[x]:=a[x]+b[x]; {формируем массив С} if x mod 2=0 then sum:=sum+c[x]; end; writeln; {переводим указатель на новую строку} for x:=1 to 20 do {цикл вывода массива С} writeln('c[',x,']:',c[x]); {вывод текста на экран} writeln('sum=',sum); {сумма четных элементов массива С} end. --- текст в фигурных скобках удалять не обязательно, он на код не влияет.
Задача, аналогичная той, которую публиковали вчера. Только цикл repeat заменяем на while.
Сначала немного математики. О модуле тут смысла нет говорить, поскольку все 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; an:=eps+1; while an>=eps do begin an:=ai(i); if an>=eps then begin s:=s+an; Inc(i) end end; 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
Если раздражает наличие функции, можно и без нее: uses Crt;
var i,j:integer; eps,s,an,p:real; begin ClrScr; Write('eps='); Read(eps); s:=0; i:=1; an:=eps+1; while an>=eps do begin p:=1; for j:=i+1 to 2*i do p:=p*j; an:=1/p; if an>=eps then begin s:=s+an; Inc(i) end end; Writeln('s=',s); ReadKey end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку