IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Обработка числовой последовательности-паскаль, По формуле найти сумму нечетных членов
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


М
Теги !



есть такое задание- Найти сумму не четных членов последовательности....
последовательность ((-1)^k*p^k*cos^k(2*x))/k*(k-1)
где x=max(a,b)+min(c,d) p=p0+(i-1)*h i=1,...,m
с клавы вводим значения- a=3.5 b=2.4 c=6.1 d=-3.5 p0=1 h=0.2 m=6и длинна n=4

саму прогу я написал так-


program Rekur2 (input, output);
uses crt;
Var a, b, x0, h, p, x, max, min, ak, s, c, d, p0: real;
n, m, l, g, i, k: integer;
begin
clrscr;
writeln('ВВЕДИТЕ a, b, c, d, p0, h, m, n');
read(a, b, c, d, p0, h, m, n);
if a>b
then
max:=a
else
max:=b;
if c>d
then
min:=d
else
min:=c;
{perebor X}
for i:=1 to m do
begin
x:=max+min;
ak:=p*cos(2*x);
p:=p0+(i-1)*h;
writeln('p=',p:6:(2*n-1));
write('a1=', ak:6:(2*n-1));
s:=ak;
{vi4islenie po rekkurentnoi formule}
for k:=2 to n do
begin
ak:=-ak*p*cos(2*x)/k*(k-1);
write('a',k,'=',ak:6:(2*n-1));
end;
if k = (2*n-1)
then
s:=s+ak;
writeln;
writeln('s=',s:6:(2*n-1),' при x=',x:6:(2*n-1));
readkey
end;
end.
end.


Значения X считает нормально, p тоже.....а сумму нет....
если не сложно помогите пожалуйста

Сообщение отредактировано: klem4 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
сообщение
Сообщение #2


Гость






Цитата
Значения X считает нормально, p тоже.....а сумму нет....
Естественно... У тебя по крайней мере две ошибки... Первая:

for k:=2 to n do
begin
ak:=-ak*p*cos(2*x)/k*(k-1);
write('a',k,'=',ak:6:(2*n-1));
end;

{ Начиная вот отсюда, ты не должен обращаться к переменной K !!! }


Потому что по окончании работы цикла естественным путем ее значение не определено. Там может быть и 1 и 0 и 10000.

Второе...
по формуле:
((-1)^k*p^k*cos^k(2*x))/k*(k-1)
ты же считаешь:
for k:=2 to n do
begin
ak:=-ak*p*cos(2*x)/k*(k-1);
...
end;

Это все прекрасно и удивительно, но надо вот так:

ak:=-ak*p*cos(2*x)/(k*(k-1)); { Обрати внимание на скобки в знаменателе }


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


я дубина еще в формуле ((-1)^k*p^k*cos^k(2*x))/k*(k-1) факториал забыл
надо ((-1)^k*p^k*cos^k(2*x))/k*(k-1)!
и как прекратить обращение к переменной к???
я....того.... тупо по методичке делал изменяя под своё условие что как....а до этого в паскале и еще где нить не писал ничего


Сообщение отредактировано: maximmax -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Потому что по окончании работы цикла естественным путем ее значение не определено. Там может быть и 1 и 0 и 10000.

по идее, там должно быть n+1.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






С чего бы? Доки читать срочно... Или ссылку привести?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


вот че то исправил....
считает правильно только первый и второй член последовательности третий и четвертый нет((((
сумму тоже не считает и знак в члене не верный(((
program Rekur2 (input, output);
uses crt;
Var a, b, x0, h, p, x, max, min, ak, s, c, d, p0: real;
n, m, l, g, i, k: integer;
begin
clrscr;
writeln('VVEDITE a, b, c, d, p0, h, m, n');
read(a, b, c, d, p0, h, m, n);
if a>b
then
max:=a
else
max:=b;
if c>d
then
min:=d
else
min:=c;
{perebor X}
for i:=1 to m do
begin
x:=max+min;
p:=p0+(i-1)*h;
ak:=p*cos(2*x);
writeln('p=',p:6:(2*n-1));
write('a1=', ak:6:(2*n-1));
s:=ak;
{vi4islenie po rekkurentnoi formule}
for k:=2 to n do
begin
l:=1;
l:=l*(k-1);
ak:=-ak*p*cos(2*x)/(k*l);
write('a',k,'=',ak:6:(2*n-1));
end;
if k = (2*n-1)
then
s:=s+ak;
writeln;
writeln('s=',s:6:(2*n-1),' pri x=',x:6:(2*n-1));
readkey
end;
end.
end.



а как поменять это непонимаю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 6:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name