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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2021, 10:57   #1
Rixoz
Пользователь
 
Регистрация: 08.12.2019
Сообщений: 12
По умолчанию Перевод из Паскаля на С++

Помогите пожалуйста с переводом на 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;
Rixoz вне форума Ответить с цитированием
Старый 13.03.2021, 13:30   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,619
По умолчанию

Что-то смутно знакомое...
https://programmersforum.ru/showthre...01#post1828801
И так в течение месяца, по уже готовому алгоритму - ни малейшей попытки хоть что-нибудь сделать?
Видел лентяев, сам лентяй, но чтоб настолько...
Даю очередную подсказку: замени begin end на {}, := на = , вывод в Мемо на cout.
Кстати, это не Pascal, а Object Pascal, присутствующий в Delphi.
digitalis на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод с паскаля на С# bublik3 Помощь студентам 6 17.12.2020 20:56
Перевод с Паскаля на C# Camelot_2012 C# (си шарп) 1 10.11.2015 17:23
Перевод на C++ с паскаля dimka123 Помощь студентам 0 12.04.2014 23:16
перевод из паскаля в с++ dANIL282 Помощь студентам 2 21.01.2011 00:05