Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 08.01.2011, 22:03   #1 (permalink)
zhenia60
Новичок
 
Регистрация: 08.01.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с одной задачкой на Паскале

Вычислить сумму 1/3-5/7+7/9-9/11+... Число слагаемых задаётся с клавиатуры.
zhenia60 вне форума   Ответить с цитированием

Старый 08.01.2011, 22:03
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Может быть ваша тема уже имеет решение на нашем форуме, посмотрите тут

Помогите с задачей в Паскале
Помогите с программой в Паскале
Помогите с задачкой на сортировку обменом
Помогите с задачкой по графике
Помогите с задачкой на Паскале
Помогите с программой в паскале

Старый 08.01.2011, 22:17   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

или вы пропустили один член ряда или я чего-то не пойму... по идее должно быть
1/3-3/5+5/7-7/9+9/11+...+(-1)^2n*(2n-1)/(2n+1)
kreol вне форума   Ответить с цитированием
Старый 08.01.2011, 22:55   #3 (permalink)
zhenia60
Новичок
 
Регистрация: 08.01.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

так и есть... я пропустил члены ряда! грешен!
zhenia60 вне форума   Ответить с цитированием
Старый 09.01.2011, 07:48   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Формулу в общем виде вам почти дали, используя её и цикл "пока" - пишите программу, там ничего особо сложного нет.
__________________
Убить всех человеков!

Последний раз редактировалось AlexZir; 09.01.2011 в 09:07 Причина: ;)
AlexZir вне форума   Ответить с цитированием
Старый 09.01.2011, 08:07   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Формулу в общем виде вам дали, используя её и цикл "пока" - пишите программу, там ничего особо сложного нет.
Ну, положим, формулу дали не то, чтобы правильную, ибо (-1)^2n никакой знакопеременности не обеспечит, поскольку (-1), будучи в четную степень возведенной, завсегда единицею будет. Я бы предложил вариант [(-1)^(n-1)]*(2n-1)/(2n+1).
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.01.2011, 09:07   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

это мелочи по сравнению с мировой революцией

Как я уже писал - предлагайте свой вариант, а тут вас поправят, за вас вашу работу никто делать не будет, халява тут не очень приветствуется.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 09.01.2011, 23:10   #7 (permalink)
zhenia60
Новичок
 
Регистрация: 08.01.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Program Vika;
var N, i, S: real;
begin
write('Введите число слагаемых N=');
readln(N);
S:=0;
i:=1;
while i<=N do
begin
S:=S+exp(n-1*ln(-1))*(2*n-1)/(2*n+1);
end;
write('Сумма S=', S);
end.

простите, но я лошара в программировании. Уж исправьте, что неправильно! грешна! так или не так? Но программа не работает...
zhenia60 вне форума   Ответить с цитированием
Старый 09.01.2011, 23:13   #8 (permalink)
zhenia60
Новичок
 
Регистрация: 08.01.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Скажите, как представить Ln(-1)? И, вообще, он существует ли?
zhenia60 вне форума   Ответить с цитированием
Старый 10.01.2011, 09:28   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от zhenia60 Посмотреть сообщение
Скажите, как представить Ln(-1)? И, вообще, он существует ли?
Нет, не существует. Функция логарифм (не зависимо от основания) определена в диапазоне 0<x<=∞, а потому такой способ изменения знака не годится. Кроме того, у Вас абсолютно неправильно построен цикл: вместо того, чтобы в каждое слагаемое подставлять свое значение переменной цикла i, Вы все их считаете с постоянной величиной n. И уж если Вы используете цикл while - do, то не забывайте в его теле принудительно увеличивать значение переменной цикла i, т.е. нужно написать что-то вроде i:=i+1.
Всех этих неприятностей и проблем можно избежать, если:
1. Ввести пользовательскую функцию Sign (знак), возвращающую +1 для нечетных слагаемых и -1 для четных.
2. Задать формат переменных N и i целочисленным, а не вещественным - тогда можно обойтись обычным циклом for i:=1 to N do.
Итого:
Код:
Program Vika;
 var
  N,i:Integer;
  S: real;

Function Sign(m:Integer):Integer;
 begin
  if (m mod 2)=0 then Sign:=-1 else Sign:=1;
 end;

begin
 write('Введите число слагаемых N= ');
 readln(N);
 S:=0;
 for i:=1 to N do
  S:=S+(2*i-1)/(2*i+1)*Sign(i);
 writeln('Сумма S= ', S);
 readln;
end.
Ну или другой вариант - без функции. Например, так:
Код:
Program Vika;
 var
  N,i:Integer;
  a,S: real;

begin
 write('Введите число слагаемых N= ');
 readln(N);
 S:=0;
 for i:=1 to N do
  begin
   a:=(2*i-1)/(2*i+1);
   if (i mod 2)=0 then a:=-a;
   S:=S+a;
  end;
 writeln('Сумма S= ', S);
 readln;
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:49.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.