Вопрос № 85827: Доброго времени суток!
Вычислить значение функции (пишу словами) сумма (алгоритмический знак знаком думаю всем, вверху бесконечность, внизу n=1) 2x в степени n деленное на 2n! с точностью e=10 в -4 степени. Х изменяется от -1 до 1 с шагом 0,1. Вы...Вопрос № 85900: Здравствуйте!
У меня ещё один вопрос по поводу распечатывания чисел Фибоначчи на Паскале.
Вот код программы с оператором FOR:
program P1;
uses
Crt;
var
i: Byte;
n: Byte;
pFib, ppFib, Fib: LongInt;
begin<br...
Вопрос № 85.827
Доброго времени суток!
Вычислить значение функции (пишу словами) сумма (алгоритмический знак знаком думаю всем, вверху бесконечность, внизу n=1) 2x в степени n деленное на 2n! с точностью e=10 в -4 степени. Х изменяется от -1 до 1 с шагом 0,1. Вычисление оформить как функцию, результаты вывести в виде таблицы.
Надеюсь Вы поняли какой пример?!:) И почему формулы нельзя вставить?
Отвечает: Gh0stik
Здравствуйте, Ершов Сергей Николаевич!
Вот решение, в функциях я описал нахождение степени числа и факториал числа.
uses crt;
var x,s,a,e:real;
n,i:integer;
function fact(f:integer):longint;
begin
if f=1 then fact:=1
else fact:=f*fact(f-1);
end;
function power(xx:real; st:integer):real;
var i:integer;
r:real;
begin
r:=1;
for i:=1 to st do r:=r*xx;
power:=r;
end;
begin
clrscr;
x:=-1; e:=0.0001;
writeln(' | x | s |');
writeln(' =======================');
while x<1+0.1 do
begin
n:=1; s:=0;
repeat
a:=power(2*x,n)/(fact(2*n));
s:=s+a;
inc(n);
until abs(a)
writeln(' | ',x:6:2,' | ',s:9:6,' | ');
x:=x+0.1;
end;
writeln(' =======================');
end.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 07.05.2007, 14:10
Вопрос № 85.900
Здравствуйте!
У меня ещё один вопрос по поводу распечатывания чисел Фибоначчи на Паскале.
Вот код программы с оператором FOR:
program P1;
uses
Crt;
var
i: Byte;
n: Byte;
pFib, ppFib, Fib: LongInt;
begin
ClrScr;
pFib:= 0;
ppFib:= 1;
write('Vvedite kol-vo chisel ');
readln(n);
for i:= 1 to (n - 1) do
begin
Fib:= pFib + ppFib;
ppFib:= pFib;
pFib:= Fib;
write(Fib, ', ');
end;
writeln(pFib + ppFib, '.');
writeln;
write('Press any key...');
readln;
end.
Я слышал, что эту же программу можно написать при помощи операторов Repeat и Until. Скажите, пожалуйста, как это можно сделать?
Очень надеюсь на помощь!
В принципе, все легко реализуется: for to заменяется на repeat until, добавляется дополнительная операция inc(i). См. приложение.
Таким образом можно любую for...to...do заменять на repeat...until...
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ICQ: 281599577 ---- Ответ отправлен: 07.05.2007, 19:55 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Крылов Александр Владимирович
Здравствуйте, Красильников И.П.! !!!
В общем, практически всегда можно один тип цикла заменить на другой, т.е for на repeat или while например
Вот этот код
for i:= 1 to (n - 1) do
begin
Fib:= pFib + ppFib;
ppFib:= pFib;
pFib:= Fib;
write(Fib, ', ');
end;
надо просто заменить на следующий
i:= 0; - неверно!!! {i:= 1; - верная запись для данной задачи}
repeat
inc(i);
Fib:= pFib + ppFib;
ppFib:= pFib;
pFib:= Fib;
write(Fib, ', ');
until i<=n-1; - ошибка!!! {until i>n-1; - верная запись для данной задачи} Edited by Gh0stik
Ответ отправил: Крылов Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 07.05.2007, 20:18 Оценка за ответ: 5 Комментарий оценки: Да, всё понятно, спасибо!
Отвечает: Шарков Сергей Николаевич
Здравствуйте, Красильников И.П.!
program P1;
uses
Crt;
var
i: Byte;
n: Byte;
pFib, ppFib, Fib: LongInt;
begin
ClrScr;
pFib:= 0;
ppFib:= 1;
write('Vvedite kol-vo chisel ');
readln(n);
i:=1;
repeat
i:=i+1;
Fib:= pFib + ppFib;
ppFib:= pFib;
pFib:= Fib;
write(Fib, ', ');
until i<n
writeln(pFib + ppFib, '.');
writeln;
write('Press any key...');
readln;
end.
Ответ отправил: Шарков Сергей Николаевич (статус: 3-ий класс)
Ответ отправлен: 08.05.2007, 20:46 Оценка за ответ: 5 Комментарий оценки: Спасибо!