KMA
Долгожитель
|
Ok, вот код: for i:=1 to n do begin if i mod 2 =0 then buf:=-1/i else buf:=1/i; summ:=summ+buf; end; buf, summ: real; i: word;
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 4 дек. 2006 16:51 | IP
|
|
StudentTNGU
Удален
|
KMA, thanx, а почему i: word ??? Мне ещё на другом форуме дали решение этой задачи. Вот: s := 1; sign := -1; for i := 0 to n - 1 do s := s + (sign / (2 * i + 1)); sign := - sign; end; Но результаты их работы разные... Кто то ошибся или что? (Сообщение отредактировал StudentTNGU 4 дек. 2006 17:05)
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 4 дек. 2006 16:55 | IP
|
|
Kron
Новичок
|
Ошибся КМА немного.
|
Всего сообщений: 37 | Присоединился: октябрь 2006 | Отправлено: 4 дек. 2006 22:20 | IP
|
|
KMA
Долгожитель
|
угу, я ошибся, просто невнимательно посмотрел задачу (там только нечетные числа), у меня бы считал ряд 1-1/2+1/3-1/4... Делал с рабочего места и потом быстро. Но если говорить про другое решение то у них то же аж целых две ошибки, во первых, не поставлен begin после do (т. е. не заключены два оператора в логические скобки), а во вторых у тебя вначале ряда не будет 1, а будет сразу 1/3-1/5 т. д. Короче, вот правильное решение: s := 0; sign := 1; for i := 0 to n do begin s := s + (sign / (2 * i + 1)); sign := - sign; end; (Сообщение отредактировал KMA 4 дек. 2006 22:35)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 4 дек. 2006 22:21 | IP
|
|
Kron
Новичок
|
КМА, тогда уж цикл с 1 начинать надо по-моему. Еще раз ряд посмотри, пожалуйста. (Сообщение отредактировал Kron 4 дек. 2006 22:29)
|
Всего сообщений: 37 | Присоединился: октябрь 2006 | Отправлено: 4 дек. 2006 22:27 | IP
|
|
KMA
Долгожитель
|
Все верно. Если начинать с 1, тогда и S надо присваивать 1, в принципе, нет никакой разницы. Я могу и так написать: s := 1; sign := -1; for i := 1 to n do begin s := s + (sign / (2 * i + 1)); sign := - sign; end; И это то же не меняет сути дела. Единственное что, мы здесь сэкономим всего 3 такта, что я думаю особо на программе не отобразиться. =)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 4 дек. 2006 22:35 | IP
|
|
StudentTNGU
Удален
|
Спасибо. Программка работает. лабу сдал. ураааа. большое спасибо
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 5 дек. 2006 15:39 | IP
|
|
Kron
Новичок
|
А по-моему не верно: если скажем я введу 1 член ряда то должно получиться 1 а получается другое =) (Сообщение отредактировал Kron 5 дек. 2006 21:14) (Сообщение отредактировал Kron 5 дек. 2006 21:15)
|
Всего сообщений: 37 | Присоединился: октябрь 2006 | Отправлено: 5 дек. 2006 21:11 | IP
|
|
KMA
Долгожитель
|
Это по-твоему, а если реально смотреть програме в исходный код, то как раз все получиться, единственное, что сместиться на еденицу... Если вам так угодно, то начните цикл с двух и все ваши проблемы будут решены. Главное -- идея, а к решению приводит лишь аккуратность. Я излагал идею, а не решение. И еще вопрос, здесь есть принципиальная разница??? Всегда можно подогнать... Или это так, природное занудство и допотопность??? У меня то же часто такое бывает, особенно в отношении математики =)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 5 дек. 2006 21:34 | IP
|
|
Kron
Новичок
|
=) Не обижаися.
|
Всего сообщений: 37 | Присоединился: октябрь 2006 | Отправлено: 5 дек. 2006 23:24 | IP
|
|