Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2010, 22:33   #1
LollyPoop
Новичок
Джуниор
 
Регистрация: 21.04.2010
Сообщений: 1
Сообщение какая ошибка в программе?

Разработать алгоритм и составить программу вычисления таблицы значений функции, заданной в виде разложения в ряд. Значение функции вычислять с точностью Е>0, т.е. вычисление суммы членов ряда необходимо прекратить, когда абсолютная величина очередного члена ряда разложения окажется меньше Е: |ак| <Е.
При вычислении очередного члена целесообразно воспользоваться рекурентным выражением:
а.к+1=ск.ак; к= 0, 1, 3, ...,
где ак - некоторый к-ый член ряда; ак+1 - следующий к+1-ый член ряда; ск - коэффициент, определяемый номером к.

"Вычисление суммы ряда" помимо процедур и функций должно содержать чтение из файла и запись в файл. Программа должна давать пользователю возможность осуществлять ввод данных из специальным образом отформатированного файла, а результат выводить в файл.
Текст программы:

Program ryad;

Uses Crt;

Var
f:text; {текстовый файл}
kolichOtrez, c, k, number:integer;
a,b,Shag,s,p, e,x,i:real;

Procedure Input (var a, b, Shag, e: real);

Begin
Writeln ('Данная программа вычисляет таблицу значений функций');
Repeat
write ('->Введите начальное значение x: ');
readln (a);
write ('-> Введите конечное значение X: ');
readln (b);
If (a=b) or (a>b) then writeln ('Ошибка! Повторите ввод');
Until ((a<>b) and (a<b));

Repeat
Write ('-> Введите шаг изменения X: ');
readln (Shag);
If (shag<=0 ) then Writeln ('Ошибка! Неправильное значение шага');
Until (shag>0);

Repeat;
write ('-> Введите точность вычислений (больше 0): ');
readln (E);
if e<= 0 then writeln ('Ошибка! e должно быть больше 0. Повторите ввод.')
Until (e>0);

end;

Function Func ( e: real): real;
var i, KolichOtrez: integer; x:real;

begin
KolichOtrez:=trunc((b-a)/Shag);
writeln (' № X f(x) № чл.р.');
for i:=0 to KolichOtrez do
begin
s:=0;
k:=1;
c:=i+1;
x:=a+i*Shag;
p:=x;
repeat
s:=s+p;
p:=p*((-sqr(x))/((2*k+1)*(2*k)));
k:=k+1;
until (abs(p) <= e);
Func:=p;
Writeln (c:3,' ',x:6:3,' ',s:6:3,' ',k:3);
end;
end;

BEGIN

ClrScr;
Writeln ('*** Программа вычисления суммы ряда ***');

Assign (f, 'd:\ryad.txt');

rewrite (f); {открыть файл в режиме добавления}

Input (a, b, Shag, e);
i:=a;
repeat
p:=Func ( e);
write (f,' ',c:3);
write (f,' ',x:6:3);
write (f,' ',s:6:3);
writeln (f,' ',k:3);
i:=x+shag;
until x>b;
Close (f);
writeln ('-> Информация записана в файл.');
Writeln ('-> Для выхода из программы нажмите Enter.');
readln;

End.


Проблема в том, что в файл записывается последнее значение члена ряда, а два остальных нет.
LollyPoop вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi, подскажите какая ошибка. aleksandrdss Помощь студентам 1 12.04.2009 07:20
маленькая програ на паскале,какая-то ошибка помогите кто знает:) Jeksik Помощь студентам 9 14.10.2008 14:03
помогите. массив не взамодействует с функцией. какая-то ошибка стека. koir Паскаль, Turbo Pascal, PascalABC.NET 5 10.06.2008 08:32
Какая то ошибка! aesoem БД в Delphi 3 06.03.2008 18:18