• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Перевод из Паскаля на С++

  • Автор темы Автор темы Rixoz
  • Дата начала Дата начала

Rixoz

Ученик
Регистрация
13 Мар 2021
Сообщения
3
Реакции
0
Баллы
0
Перевод из Паскаля на С++

Помогите пожалуйста с переводом на C++

Задача для понимания программы.

Для х изменяющегося от a до b с шагом (b-a)/k, где
(k=10), вычислить функцию f(x), используя ее разложение в
степенной ряд в двух случаях:
а) для заданного n;
б) для заданной точности ε (ε=0.0001).
Для сравнения найти точное значение функции.
Вариант задания указан на фото
| Функция | Диапазон изменения аргумента | n | Сумма |

Указания

1. Алгоритм решения задачи сводится к трем циклам, причем два из них вложены в третий. Внутренние циклы суммируют слагаемые при фиксированном параметре x, один (арифметический для заданного n), другой (итерационный для за-
данной точности ε. При организации этих циклов следует обратить внимание на правильный выбор формулы для вычисления элемента ряда an и правильное присвоение начальных значений переменным цикла. Внешний цикл организует изменение параметра х.
2. Результаты расчетов отпечатать с следующем виде:
Вычисление функции
X=...... SN=...... SE=..... Y=......
X=...... SN=...... SE=..... Y=......
..........
X=...... SN=...... SE=..... Y=......
Здесь X- значение параметра; SN- значение суммы для за-
данного n; SE- значение суммы для заданной точности; Y-
точное значение функции.
Код:
// Главный цикл
procedure TForm1.FormClick(Sender: TObject);
var x,y,s,s2:Extended; i,NN: integer ;

// Точное значение
function YY (x:Extended): Extended ;
var tmp,s: Extended ;
begin
  tmp := x/2 ;
  s := (tmp *(tmp+1) +1.0) * Exp (tmp) ;
  Result := s
end ;

//  Для заданного n
function summa (x:Extended;n:integer): Extended ;
var i,nf: integer; tmp,tmp1,s: Extended ;
begin
  s := 1.0 ;
  tmp := x/2 ;
  tmp1 := 1.0 ;
  nf := 1 ;
  for i := 1 to n do
    begin
      nf := nf * i ;
      tmp1 := tmp1*tmp ;
      s := s + (i*i+1) * tmp1 / nf ;
    end ;
  summa := s;
end ;

//  Для заданного epsylon
function summa2 (x,eps:Extended;var nitt:integer): Extended ;
var i,nf: integer; eps1,tmp,tmp1,s,slast: Extended ;
begin
  nitt := 0 ;
  eps1 := 1 ;
  slast := 1 ;
  s := 1.0 ;
  tmp := x/2 ;
  tmp1 := 1.0 ;
  nf := 1 ;
  i := 1 ;
  while (Abs(eps1)>eps)do
    begin
      Inc (nitt) ;
      nf := nf * i ;
      tmp1 := tmp1*tmp ;
      s := s + (i*i+1) * tmp1 / nf ;
      eps1 := s - slast ;
      slast := s ;
      Inc (i) ;
    end ;
  summa2 := s;
end ;

begin
   for i := 1 to 10 do
   begin
     x := i/10.0 ;
     y := YY (x) ;
     s := summa (x,10) ;
     s2 := summa2 (x,0.00001,NN) ;
     Memo1.Lines.Add(Format('%3.1f  %9.6f %9.6f %9.6f %6d',[x,y,s,s2,NN]))
   end ;
end;
 
Я научу тебя как нужно добывать требуемое.
Собирай программу, дизассемблируй программой Ильфака - ИДой
нажми f5 получишь результат.
 
Назад
Сверху