17.10.2010, 18:31 | #1 (permalink) |
Member
Регистрация: 17.10.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите написать программу в турбо делфи
При некоторых заданных x, N и E, определяемых вводом, вычислить: a) сумму N слагаемых заданного вида; b) сумму тех слагаемых, которые по абсолютной величине больше Е. Для случая b выполнить суммирование для двух значений Е, отличающихся на порядок, и при этом определить количество слагаемых, включенных в сумму. Сравнить результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем в интервале (-R, R). 1/sqrt(1-sqrX)=1+1/2*sqrX+1*3/2*4*sqrX-1*3*5/2*4*6*x^6+...(R=1)} program project1; {$APPTYPE CONSOLE} //const n=3; var x,s,p,stx,e:real; i,j,k,zn,n,ch:integer; begin writeln('wwedite x'); readln(x); writeln('wwedite e'); readln(e); writeln('wwedite n'); readln(n); s:=1; p:=1; for i:=1 to n do begin p:=p*(2*i-1)*sqr(x)/(2*i); s:=s+p; end; writeln('summa= ',s:9:5); s:=1; stx:=sqr(x); k:=1; ch:=1; zn:=2; i:=2; while ch*stx/zn>e do begin s:=s+ch*stx/zn; k:=k+1; inc(i,2); zn:=zn*i; ch:=ch*(i-1); stx:=stx*sqr(x); end; writeln('summa= ',s:9:5); writeln('kol-vo slag= ',k); e:=e/10; s:=1; stx:=sqr(x); k:=1; ch:=1; zn:=2; i:=2; while ch*stx/zn>e do begin s:=s+ch*stx/zn; k:=k+1; inc(i,2); zn:=zn*i; ch:=ch*(i-1); stx:=stx*sqr(x); end; writeln('summa= ',s:9:5); writeln('kol-vo slag= ',k); readln; end. |
17.10.2010, 18:31 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Давайте проясним ситуацию, прочитав похожие темы на форуме Помогите составить программу на турбо паскаль Помогите написать программу Помогите написать программу на языке Делфи Помогите написать программу |
17.10.2010, 22:06 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну почему же - всё так, и ответ такой, как надо. Сейчас я протестировал Вашу программу. Единственное, что необходимо исправить, это исключить переменные ch и zn из перечня формата Integer и в раздел описания переменных добавить строку
ch, zn:Extended; Дело в том, что с увеличением i значения этих переменных быстро нарастают и они "вылетают" за границу допустимого диапазона Integer. Кроме того, раз требуют, нужно в самом конце, перед readln, добавить writeln('tochnoe znach= ',1/sqrt(1-sqr(x)):9:5); Вот и всё. |
18.10.2010, 12:30 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Получившийся листинг - сюда, будем разбираться.
__________________
Убить всех человеков! |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
18.10.2010, 12:31 | #6 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Readln; Halt; , локализовать место сбоя. Дело в том, что поскольку программа написана не столько на Дельфи, сколько на Паскале, то я вчера ее на Паскале и отлаживал. У меня всё идёт и не вылетает. И да, кстати насчет листинга - AlexZir прав: выложите, посмотрим. Может быть, просто описка где-то. |
|
18.10.2010, 13:16 | #10 (permalink) |
Member
Регистрация: 17.10.2010
Сообщений: 43
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
program project1;
{$APPTYPE CONSOLE} //const n=3; var x,s,p,stx,e:real; i,k,n:integer; ch,zn:Extended; begin writeln('wwedite x'); readln(x); writeln('wwedite e'); readln(e); writeln('wwedite n'); readln(n); s:=1; p:=1; for i:=1 to n do begin p:=p*(2*i-1)*sqr(x)/(2*i); s:=s+p; end; writeln('summa= ',s:9:5); s:=1; stx:=sqr(x); k:=1; ch:=1; zn:=2; i:=2; while ch*stx/zn>e do begin s:=s+ch*stx/zn; k:=k+1; inc(i,2); zn:=zn*i; ch:=ch*(i-1); stx:=stx*sqr(x); end; writeln('summa= ',s:9:5); writeln('kol-vo slag= ',k); e:=e/10; s:=1; stx:=sqr(x); k:=1; ch:=1; zn:=2; i:=2; while ch*stx/zn>e do begin s:=s+ch*stx/zn; k:=k+1; inc(i,2); zn:=zn*i; ch:=ch*(i-1); stx:=stx*sqr(x); end; writeln('summa= ',s:9:5); writeln('kol-vo slag= ',k); writeln('tochnoe znach= ',1/sqrt(1-sqr(x)):9:5); readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|