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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 15:17   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию Второй блок программы Delphi

Доброго времени суток всем! Помогите пожалуйста со второй частью. Там где у меня неверно написано я взял ту часть кода программы в круглые скобки то есть после choice=2. Заранее благодарен!

Условие.
При некоторых заданных x, E, n определяемых вводом вычислить: 1) сумму n слагаемых заданного вида. 2) а так же сумму тех слагаемых которые по абсолютной величине небольше E. Для второго случая выполнить суммирование для двух значений Е отличающихся на порядок то есть для Е и Е/10 при этом определить количество слагаемых включенных в сумму. Для пункта 1 и 2 сравнить результат с точным значением функции.


arth(x)=x+(x^3)/3+(x^5)/5+(x^7)/7+...=(x^(2n+1))/(2n+1), abs(x)<1, n от нуля до безконечности.


Приближенное значение функции я высчитал
s:=0;
a:=x;
begin
s:=s+a;
a:=a*x*x*(2*i+1)/(2*i+3)
end;
И точное значение функции
ln((x+1)/(x-1))/2


Код:

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

var
 choice:integer;
 error:boolean;
 i,n,k:integer;
 tz,s,a,x,E:real;
 exit:char;
begin
 setconsolecp(1251);
 setconsoleoutputcp(1251);

 repeat
  writeln('1.Сумма N слагаемых.');
  writeln('2.Сумма с точностью Е.');
  writeln('3.Выход.');
  repeat
   writeln;
   write('Ваш выбор: ');readln(choice);
   error:=(choice<1)or(choice>3);
   if error then
   writeln('Ошибка ввода!');
  Until not error;
  if choice<>3 then
                begin
                  write('Введите x: '); Readln(x);
                  writeln('Точное значение',ln((x+1)/(x-1))/2:11:9);
                  if choice=1 then
                              begin
                               Write('Введите количество слагаемых: ');Readln(n);
                               s:=0;
                               a:=x;
                               for i:=0 to n-1 do
                               begin
                                s:=s+a;
                                a:=a*x*x*(2*i+1)/(2*i+3)
                               end;
                               writeln('Приближенное значение: ',s:11:9);
                              end

                             else

                             //choice=2

                          (   begin
                               write('Введите точность:');
                               readln(E);
                               while (E<0) or (E>1) do
                                begin
                                 writeln('Ошибка ввода');
                                 readln(E);
                                end;
                               s:=0;
                               a:=x;
                               i:=1;
                               while abs(i*a)>E do
                               begin
                                s:=s+a;
                                a:=a*x*x*(2*i+1)/(2*i+3);
                                i:=i+1
                               end;
                               writeln('Сумма',i-1,'слагаемых, модуль которых больше',E:8:8,'равна: ',s:8:8);
                               while abs(i*a)>E/10 do
                                begin
                                 s:=s+a;
                                 a:=a*x*x*(2*i+1)/(2*i+3);
                                 i:=i+1;
                                end;
                               writeln('Сумма',i-1,'слагаемых, модуль которых больше',(E/10):8:8,'равна: ',s:8:8);
                               tz:=tz/10;
                               Writeln('Точность: ',tz:2:9);
                               Writeln('Приближенное значение: ',s:11:9);
                               Writeln('Слагаемых: ',i);   )

                              end;
                 Write('Завершить работу?(Y/N)');Readln(exit);Write(#10);
                 end
                else
              exit:='y';

 until (Exit='y') or (Exit='Y');
end.
Начинающий програм вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запретить второй запуск программы. Приложение без окон Lauri Общие вопросы Delphi 18 05.07.2011 15:48
Считывание файла со второй строки (delphi) CAMOBAP Помощь студентам 19 12.01.2011 23:04
первый блок должен заливать весь фон, а второй блок блок выводить сплошную горизонтальную балку SanBorisych HTML и CSS 2 12.01.2010 17:42
Второй монитор из Delphi Sion Win Api 1 22.11.2006 20:08