|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
13.03.2021, 11:50 | #1 (permalink) |
Новичок
Регистрация: 13.03.2021
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Перевод из Паскаля на С++
Задача для понимания программы. Для х изменяющегося от 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; |
13.03.2021, 11:50 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Аналогичные темы в которых возможно есть ответ который вас интересует Перевод с Паскаля на СИ Перевести цикл с Паскаля на Си Перевести с Паскаля на Си Переход из Паскаля в Луа Из Паскаля в Делфи. |
12.04.2021, 19:16 | #2 (permalink) |
Banned
Регистрация: 12.04.2021
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Я научу тебя как нужно добывать требуемое.
Собирай программу, дизассемблируй программой Ильфака - ИДой нажми f5 получишь результат. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
c++, паскаль |
Опции темы | |
Опции просмотра | |
|
|