Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2009, 22:16   #1
eKStaSy
 
Регистрация: 11.10.2009
Сообщений: 3
Вопрос Сумма ряда

Программа по вычислению суммы ряда до члена ряда с точность Eps.
Производить печать текущих значений суммы количества членов ряда.
Как реализовать, сумму ряда, т.е sum 3 членов=N1+N2+N3, не N1+N3
Код:
program Sum;


{$APPTYPE CONSOLE}

var
  N: Integer;        { Переменная, по которой вычисляются члены ряда }
  Step: Integer;     { Шаг                                           }
  S: Real;           { Текущая сумма ряда до N                       }
  NP,                { Текущий член ряда                             }
  X: Real;           { Переменная                                    }
  M: Integer;        { Максимальное кол-во циклов                    }
  Eps: Real;
  I: Integer;

begin

    // Ввод данных
  Write( 'Введите шаг и максимальное кол-во циклов ' );
  ReadLn(Step, M);
  Write( 'Введите значение X ');
  ReadLn(X);
  Write('Введите точность расчета ');
  ReadLn(Eps);
  WriteLn('':100);
  WriteLn('':5, '┌─────┬───────────┬───────────┐');
  WriteLn('':5, '│', '  N  ', '│', ' Значение  '
          , '│', ' Сумма     ' , '│');
  WriteLn('':5, '│', '':5, '│', ' элемента  '
          , '│', '   ряда    ' , '│');

  WriteLn('':5, '├─────┼───────────┼───────────┤');
  I := 0;
  S := 0;
  N := 1;

    // Вычисление и вывод в таблице

  repeat
    Inc(I);
    NP := (2*N-1)/Exp(Ln(2)*N/2);
    S := S + NP;

      // расчет места для ячейки
    if N <= 9 then
      WriteLn('':5, '│', ' ', N, '   ', '│', ' ', NP:8:7, '':1, '│', ' ', S:6:7,' ', '│')
    else

      if (N > 9) and (N < 101) then
        WriteLn('':5, '│', ' ', N, '  ', '│', ' ', NP:8:7, '':1, '│', ' ', S:6:7, ' ', '│');
      if (N > 100) and (N < 1001) then
        WriteLn('':5, '│', ' ', N, ' ', '│', '   ', NP:8:7, '':1, '│', ' ', S:6:7, ' ', '│');
      if (N > 1000) and (N < 10001) then
        WriteLn('':5, '│', ' ', N, '', '│', '  ', NP:8:7, '':1, '│', ' ', S:6:7, ' ', '│');
      WriteLn('':5, '├─────┼───────────┼───────────┤');
      N := N + Step;
    if I >= M then
    begin

  if M mod 1 = 0 then
    begin
      WriteLn(' ':100);
      WriteLn('Этот ряд не сходится на ', M, ' цикле');
      Break;
    end
  else
    begin
      WriteLn(' ':100);
      WriteLn('Этот ряд не сходится на ', M, ' циклах');
      Break;
    end
  end;
  until NP < Eps;
  WriteLn;
  WriteLn('Сумма ряда: ', S:12:7);
  WriteLn('Количество членов ряда ', N-1);
  ReadLn;
end.
eKStaSy вне форума Ответить с цитированием
Старый 23.10.2009, 09:32   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

С помощью цикла. for или while или do while
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 23.10.2009, 11:21   #3
eKStaSy
 
Регистрация: 11.10.2009
Сообщений: 3
По умолчанию

в том и суть, что надо repeat использовать
eKStaSy вне форума Ответить с цитированием
Старый 23.10.2009, 13:04   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Вот Вам пример
Пусть требуется сложить произвольные вводимые пользователем числа до тех пор, пока их сумма не превысит 1000. Мы запрограммируем эту задачу с помощью циклов repeat и while. Сумму будем накапливать в переменной sum, а очередное число помещать в переменную a. Эти переменные могут быть как целыми, так и вещественными. С помощью цикла repeat этот алгоритм записывается так:

Код:
sum := 0;
repeat
write(' Введите число ');
read(a);
sum := sum + a
until sum > 1000;
writeln(' Сумма равна ',sum)
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 25.10.2009, 17:41   #5
eKStaSy
 
Регистрация: 11.10.2009
Сообщений: 3
По умолчанию

Код:
program SumRijda;
{  Программа, вычисляющая сумму ряда }

{$APPTYPE CONSOLE}

var
  N, N1: Integer;    { Переменная, по которой вычисляются члены ряда }
  Step: Integer;     { Шаг                                           }
  S,S1: Real;           { Текущая сумма ряда до N                       }
  NP, Temp,                { Текущий член ряда                             }
  X: Real;       { Переменная                                    }
  M: Integer;        { Максимальное кол-во циклов                    }
  Eps: Real;         { Точность                                      }
  I: Integer;        { Параметр цикла                                }
  label L1;
begin

    // Ввод данных
  Write( 'Введите шаг и максимальное кол-во циклов ' );
  ReadLn(Step, M);
  Write( 'Введите значение X ');
  ReadLn(X);
  Write('Введите точность расчета ');
  ReadLn(Eps);
  WriteLn('':100);
  WriteLn('':5, '┌─────┬───────────┬───────────┐');
  WriteLn('':5, '│', '  N  ', '│', ' Значение  '
          , '│', ' Сумма     ' , '│');
  WriteLn('':5, '│', '':5, '│', ' элемента  '
          , '│', '   ряда    ' , '│');

  WriteLn('':5, '├─────┼───────────┼───────────┤');
  Step:=2;
 { X := 2;
  M := 100;
  Eps := 1e-5; }
  I := 0;
  S := 0;
  N := 1; S1:=0;
  N1 := 1;
    // Вычисление и вывод в таблице

  repeat
    Inc(I);
    NP := (Exp(N*Ln(X-1)))/(N*Exp(N*Ln(X)));
  L1:

  if S1 <= S then
  begin
  repeat
    Temp := (Exp(N1*Ln(X-1)))/(N1*Exp(N1*Ln(X)));
    S1 := S1 + Temp;
    N1 := N1+1;
  until N1>N;
    goto L1;
  end;
    if (N >= NP) then
      S:=S1;
      // расчет места для ячейки
    if N <= 9 then
      WriteLn('':5, '│', ' ', N, '   ', '│', ' ', NP:8:7, '':1, '│', ' ', S:6:7,' ', '│')
    else

      if (N > 9) and (N < 101) then
        WriteLn('':5, '│', ' ', N, '  ', '│', ' ', NP:8:7, '':1, '│', ' ', S:6:7, ' ', '│');
      if (N > 100) and (N < 1001) then
        WriteLn('':5, '│', ' ', N, ' ', '│', '   ', NP:8:7, '':1, '│', ' ', S:6:7, ' ', '│');
      if (N > 1000) and (N < 10001) then
        WriteLn('':5, '│', ' ', N, '', '│', '  ', NP:8:7, '':1, '│', ' ', S:6:7, ' ', '│');
      WriteLn('':5, '├─────┼───────────┼───────────┤');
      N := N + Step;
    if I >= M then
    begin

  if M mod 1 = 0 then
    begin
      WriteLn(' ':100);
      WriteLn('Этот ряд не сходится на ', M, ' цикле');
      Break;
    end
  else
    begin
      WriteLn(' ':100);
      WriteLn('Этот ряд не сходится на ', M, ' циклах');
      Break;
    end
  end;
  until NP < Eps;

  WriteLn;
  WriteLn('Сумма ряда: ', S:12:7);
  WriteLn('Количество членов ряда ', N-1);
  ReadLn;
end. // программы SumRijda
тема исчерпана
eKStaSy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма ряда Sova123456 Помощь студентам 8 11.06.2010 17:10
Сумма бесконечного ряда random7 Паскаль, Turbo Pascal, PascalABC.NET 3 18.09.2009 20:41
Сумма бесконечного ряда с точностью Паскаль Кириллович Помощь студентам 9 30.05.2009 13:36
Сумма бесконечного ряда (баг) Anarx Общие вопросы C/C++ 2 23.03.2009 15:29
Паскаль. Сумма бесконечного ряда Tream Помощь студентам 4 13.10.2007 23:42