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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2014, 11:43   #1
Saren
Пользователь
 
Регистрация: 02.11.2014
Сообщений: 13
По умолчанию Цикл repeat / until

Задание: По формуле члена ряда с номером i, заданной и составить две программы (или два расчета в рамках одной программы), обеспечивающие вычисление:
А) суммы первых n членов ряда (i = 1,2,…n);
Б) суммы всех начальных членов ряда, значение которых не меньше заданного числа e, 0 < e < 1 (т.е. суммирование прекращается, как только значение некоторого члена ряда становится меньше е).

Задание по следующей формуле:

1.JPG

Выполнил часть А, осталось выполнить часть Б.


Код программы часть А Эта часть правильно сделано осталось сделать часть Б.
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
i,j,n, k,f: integer;
x, sum, sx,s : double;
begin
x:=StrToFloat(Edit1.Text);
n:=StrToInt(Edit2.Text); 
sum:=0;
  for i:= 1 to n do
  begin
      //Расчет фактариала
  f:=1;
  for j:=2 to i do
  f:=f*j;
  //Возвидение "-1" в требуюмую степень
  if odd(i+1) then
   k:=-1
   else
   k:=1;
     //Возвидение "x" в требуюмую степень
    sx:=x;
    for j:=2 to 2*i-1 do
   sx:=sx*x;
   //Расчет слагаемого и его суммирования
   sum:=sum+k*sx/(f*(2*i-1));
   end;
   Edit4.Text:=FloattostrF(sum, ffFixed,8,4);
 
end;


Код программы часть Б
Преподаватель сказал нужно оставить код программы из части А, так как формула не меняется. Изменилось только было n, стала "e" и дополнить код программы в начале и в конце кода и все.
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
 i,j,k,f: integer;
x, s,t, e : real;
begin
 x:=StrToFloat(Edit1.Text); //Ввод чисел x
e:=StrToFloat(Edit3.Text); //Ввод чисел e
sum:=0;
repeat
   // зДЕСЬ НУЖНО ПРОПИСАТЬ ЗНАЧЕНИЕ  "e" 
      //Расчет фактариала
  f:=1;
  for j:=2 to i do
  f:=f*j;
  //Возвидение "-1" в требуюмую степень
  if odd(i+1) then
   k:=-1
   else
   k:=1;
     //Возвидение "x" в требуюмую степень
    sx:=x;
    for j:=2 to 2*i-1 do
   sx:=sx*x;
    //Расчет слагаемого и его суммирования
   sum:=sum+k*sx/(f*(2*i-1));
until
// Здесь написать условие "e" или что то еще я не понимаю
sum<e;
Edit5.Text:=floattostrF(sum,ffFixed,8,4);
end;

Спасибо огромное за помощь. С уважением к форуму.

Последний раз редактировалось Stilet; 02.11.2014 в 12:24.
Saren вне форума Ответить с цитированием
Старый 02.11.2014, 12:24   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Я заранее сказал спасибо за помощь.
Это неправда! Ты написал «огромное» вместо «заранее».
Цитата:
Если не можите или не хотите помочь то для чего сайт создали и раздел "Помощь студенту"?????
Я не вижу в твоём посте просьбы о помощи.
Бонус.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.11.2014, 12:30   #3
Saren
Пользователь
 
Регистрация: 02.11.2014
Сообщений: 13
По умолчанию

min@y™

Извините если обидел, я хотел всего лишь помощи в программе
Saren вне форума Ответить с цитированием
Старый 02.11.2014, 12:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
i,j,n, k,f: integer;
x, sum, sx,s,d : double;
 sb:Double; sok:boolean;
begin
x:=StrToFloat(Edit1.Text);
n:=StrToInt(Edit2.Text); 
sum:=0; sb:=0; sok:=true;
  for i:= 1 to n do
  begin
      //Расчет фактариала
  f:=1;
  for j:=2 to i do
  f:=f*j;
  //Возвидение "-1" в требуюмую степень
  if odd(i+1) then
   k:=-1
   else
   k:=1;
     //Возвидение "x" в требуюмую степень
    sx:=x;
    for j:=2 to 2*i-1 do
   sx:=sx*x;
   //Расчет слагаемого и его суммирования
   d:=k*sx/(f*(2*i-1));
   sum:=sum+d;

//Вычисляем суммы первых членов, удовлетворяющих условию задачи.
   if sok then begin
     sb:=sb+d;
     sok:=d>=e;
   end;

   end;
   Edit4.Text:=FloattostrF(sum, ffFixed,8,4)+' '+FloattostrF(sb, ffFixed,8,4);
 
end;
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2014, 12:35   #5
Saren
Пользователь
 
Регистрация: 02.11.2014
Сообщений: 13
По умолчанию

Stilet

Мне не ясно что такое sb??? и что такое sok??? и что такое d???

в коде

Код:
//Вычисляем суммы первых членов, удовлетворяющих условию задачи.
   if sok then begin
     sb:=sb+d;
     sok:=d>=e;
Программу лучше разделить на две кнопки расчет1(через цикл for, который я сделал это часть А) и расчет2 (расчет через e который выполняется циклом repeat)

Последний раз редактировалось Saren; 02.11.2014 в 12:37.
Saren вне форума Ответить с цитированием
Старый 02.11.2014, 12:37   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

sb это сумма sok это триггер, который не дает суммировать если появится первый элемент, нарушающий условие.
d это расчет очередного элемента.
Если бы ты сам писал то что выложил в топе, то таких вопросов бы у тебя не возникло.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2014, 12:39   #7
Saren
Пользователь
 
Регистрация: 02.11.2014
Сообщений: 13
По умолчанию

А где цикл repeat???? Спасибо конечно что отвечаешь, но преподаватель требователен и смотрит не как программа работает а код программы.
Saren вне форума Ответить с цитированием
Старый 02.11.2014, 12:48   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Эта часть правильно сделано осталось сделать часть Б
Как там для n=20? Облом полный будет. Препод небось не знает о нем. Для того что бы не было этого самого облома, просто пользоваться рекуррентной формулой вычисления члена ряда:
Код:
r(i)=-r(i-1)*x^2*(2*i-3)/i/(2*i-1)
r(1)=x
А что бы получить эту формулу достаточно просто выражение i-члена ряда разделить на выражение для (i-1)-го члена ряда
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2014, 13:02   #9
Saren
Пользователь
 
Регистрация: 02.11.2014
Сообщений: 13
По умолчанию

Не знаю правильно или не т но преподователь зачел мне часть А работу осталось доделать часть Б только не изменяя формулу которая была написана в части А.
Saren вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл Repeat Anwen Помощь студентам 1 21.11.2010 16:08
Цикл while-repeat Wasisualy Помощь студентам 1 18.12.2009 20:49
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34