![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 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. Проблема в том, что в файл записывается последнее значение члена ряда, а два остальных нет. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |