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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 00:00   #1
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию Циклы! код написал....поправьте...

Задача на циклы! При некоторых заданных х, N и E, определяемых вводом, вычислите сумму N слагаемых заданного вида, а так же сумму тех слагаемых, которые по абсолютной величине больше E. Для второго случая выполните суммирование для двух значений E, отличающихся на порядок, и при этом определите количество слагаемых, включенных в сумму. Сравните результаты с точным значением функции, для которой данная сумма определяет приближенное значение при x, лежащем на интервале (-R, R).

1∕ √1-x^2=1+1/2*x^2+(1*3)/(2*4)*x^4+(1*3*5)/(2*4*6)*x^6+…. (R=1).

Вот написал код….проверьте пожалуйста,и добавьте или исправьте что либо….

Код:
Program ProjectGg1;
{$APPTYPE CONSOLE}
Uses
  SysUtils,
  Windows,
  Math;

Var
  E,a,x,S:real;
  k,N,i,j,choice:integer;
  exit_:char;

Begin
  SetConsoleOutPutCP (1251);
Repeat
  writeln('1.сумма N слагаемых');
  writeln('2.С точностью E');
  writeln('3.Завершение работы.');
  readln(choice);
 If choice=3 then
    exit;
 if (choice <>1) and (choice <>2) and (choice<>3) then
   begin
    writeln('неверный выбор');
    writeln('введите 1,2 или 3')
   end;
 if (choice =1) or (choice =2) then
  begin
   repeat
    write('введите X (-1<X<1): ');
    readln(x);
    if (x<=-1) and (x>=1) then
     begin
      writeln('неверное значение x');
      //writeln('Введите X (-1<X<1): ')
     end;
   until abs(x)<1;
   writeln('точное значение=', 1/((1+x)*(1+x)*(1+x)):9:7);
    end ;
  if choice=1 then
   begin
     writeln('введите количество слагаемых');
     readln(N);
      S:=0;
      a:=1;
     for i:=0 to N-1 do
      begin
       S:=S+a;
       a:=-a* (i+3)*x/(i+1);
      end;
       writeln('сумма ',N,'слагаемых равна ',S:9:7)
   end
 else
  begin
    writeln('Введите E');
    readln(E);
    S:=0;
    a:=1;
    i:=0;
   for k:=1 to 2 do
     begin
    while abs(a)>=E do
      begin
       S:=S+a;
       a:=-a* (i+3)*x/(i+1);
       i:=i+1
      end;
    writeln('приближенное значение (',E:8:4,')=' ,  S:9:7);
    writeln('число слагаемых=' , i);
    E:=E/10 ;
     end;
   writeln('Завершение работы?(Y/N)');
   readln(exit_)
    end;
until (choice=3) or ((exit_='Y') or (exit_='y'));
End.

Последний раз редактировалось Stilet; 15.12.2010 в 11:28.
pashqa вне форума Ответить с цитированием
Старый 14.12.2010, 09:45   #2
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию

глаза можно сломать.
засунь свой код в теги для кода.
Выглядит так # <<.
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.
sig_GB вне форума Ответить с цитированием
Старый 14.12.2010, 17:32   #3
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию

чего чего?
pashqa вне форума Ответить с цитированием
Старый 14.12.2010, 19:54   #4
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию

Код:
Program ProjectGg1;
{$APPTYPE CONSOLE}
Uses
SysUtils,
Windows,
Math;

Var
E,a,x,S:real;
k,N,i,j,choice:integer;
exit_:char;

Begin
SetConsoleOutPutCP (1251);
Repeat
writeln('1.сумма N слагаемых');
writeln('2.С точностью E');
writeln('3.Завершение работы.');
readln(choice);
If choice=3 then
exit;
if (choice <>1) and (choice <>2) and (choice<>3) then
begin
writeln('неверный выбор');
writeln('введите 1,2 или 3')
end;
if (choice =1) or (choice =2) then
begin
repeat
write('введите X (-1<X<1): ');
readln(x);
if (x<=-1) and (x>=1) then
begin
writeln('неверное значение x');
//writeln('Введите X (-1<X<1): ')
end;
until abs(x)<1;
writeln('точное значение=', 1/((1+x)*(1+x)*(1+x)):9:7);
end ;
if choice=1 then
begin
writeln('введите количество слагаемых');
readln(N);
S:=0;
a:=1;
for i:=0 to N-1 do
begin
S:=S+a;
a:=-a* (i+3)*x/(i+1);
end;
writeln('сумма ',N,'слагаемых равна ',S:9:7)
end
else
begin
writeln('Введите E');
readln(E);
S:=0;
a:=1;
i:=0;
for k:=1 to 2 do
begin
while abs(a)>=E do
begin
S:=S+a;
a:=-a* (i+3)*x/(i+1);
i:=i+1
end;
writeln('приближенное значение (',E:8:4,')=' , S:9:7);
writeln('число слагаемых=' , i);
E:=E/10 ;
end;
writeln('Завершение работы?(Y/N)');
readln(exit_)
end;
until (choice=3) or ((exit_='Y') or (exit_='y'));
End.
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.
sig_GB вне форума Ответить с цитированием
Старый 14.12.2010, 22:58   #5
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию

о,спс
Ну так кто-нибудь может подправить....или все верно? сомневаюсь насчет a:=-a* (i+3)*x/(i+1);.....
pashqa вне форума Ответить с цитированием
Старый 14.12.2010, 23:09   #6
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от pashqa Посмотреть сообщение
о,спс
Ну так кто-нибудь может подправить....или все верно? сомневаюсь насчет a:=-a* (i+3)*x/(i+1);.....
А ты не пробовал запустить программу и проверить результат , который она выдает ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 15.12.2010, 16:53   #7
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию

Цитата:
Сообщение от andrewpalkin Посмотреть сообщение
А ты не пробовал запустить программу и проверить результат , который она выдает ?
результат то выдает....но вот это выражение какое я написал не подходит вроде бы к моей задаче....по крайней мере так сказал препод))) а что именно хер его знает)
pashqa вне форума Ответить с цитированием
Старый 15.12.2010, 17:15   #8
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Цитата:
1+1/2*x^2+(1*3)/(2*4)*x^4+(1*3*5)/(2*4*6)*x^6+….
Давайте разберемся:
1/2*x^2 - это 1 в числителе и 2*x^2 в знаменателе, или x^2/2 ?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 15.12.2010, 17:30   #9
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Если я правильно поняла, то второе слагаемое = 1/(2*x^2), следующее 3/(2*4*x^4), далее 3*5/(2*4*6*x^6), следовательно очередной член ряда может быть определен как
(a*(2*i-1))/(2*i*x^2), если i изменяется от 1 до ...
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 16.12.2010, 00:02   #10
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Всю программу не могу проверить , времени нет . Но сделал небольшой код , который считает последовательность .

Для подсчета вот этого 1+1/2*x^2+(1*3)/(2*4)*x^4+(1*3*5)/(2*4*6)*x^6+….

Код:

var
  sum : double;
  i,j,numerator,denominator,num,x:integer;
begin
  sum:=1; {будет хранится сумма элементов}
  j:=1;
  numerator:=1; {числитель}
  denominator:=2; {знаменатель}
  x:=2; 
  num:=5; {количество элементов кроме 1 вначале, элементы разделены знаком "+"}
  
  for i:=1 to num do
  begin
    sum:=sum + (numerator)/(denominator*Exp((x)*Ln(j+1)));
    numerator:=numerator*j;
    denominator:=denominator*(j+1);
    j:=j+2;    
  end;
  writeln(sum); 
end.
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---

Последний раз редактировалось andrewpalkin; 16.12.2010 в 00:05.
andrewpalkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поправьте пожалуйста код batonza Общие вопросы C/C++ 3 03.10.2009 11:05
Поправьте код, пожалуйста! Blondy Общие вопросы C/C++ 10 14.09.2009 01:47
Поправьте код!!! Klim Bassenger Microsoft Office Excel 15 27.05.2009 15:24
Поправьте пожалуйста код... Rymond Помощь студентам 4 26.04.2009 19:41
Поправьте код! Klim Bassenger Microsoft Office Excel 1 10.04.2009 15:46