Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 368
от 12.05.2007, 20:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 254, Экспертов: 71
В номере:Вопросов: 2, Ответов: 4


Вопрос № 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. Вычисление оформить как функцию, результаты вывести в виде таблицы.
Надеюсь Вы поняли какой пример?!:) И почему формулы нельзя вставить?
Отправлен: 07.05.2007, 09:21
Вопрос задал: Ершов Сергей Николаевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: 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. Скажите, пожалуйста, как это можно сделать?
Очень надеюсь на помощь!
Отправлен: 07.05.2007, 19:19
Вопрос задал: Красильников И.П. (статус: 10-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Denisss

Здравствуйте, Красильников И.П.!

В принципе, все легко реализуется: 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
Комментарий оценки:
Спасибо!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное