Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

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

Ответ
 
Опции темы
Старый 29.01.2018, 18:50   #1
Lapiss
Новичок
 
Регистрация: 29.01.2018
Сообщений: 1
Репутация: 10
По умолчанию Использования циклов

Приведите примеры использования циклов для следующей задачи: вывести таблицу значений функции y=ln(1+x) для x, изменяющихся в интервале от x1 до x2 с шагом h формула в картинке
Код:

var a,b,h,y,x:real;
begin
  writeln('a, b, h');readln(a,b,h);
  x:=a;
  while x<b do
    begin
      if x-1<1 then writeln(x:0:6,' undefined')
      else writeln(x:0:6,ln(1+x):10:6);
      x:=x+h;
    end;
  readln;
end.

Изображения
Тип файла: png 2.png (2.8 Кб, 22 просмотров)
Lapiss вне форума   Ответить с цитированием
Старый 30.01.2018, 13:23   #2
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 761
Репутация: 346
По умолчанию

Я так понял, требуется вывести табуляцию функции, не используя стандартную функцию Ln, иначе зачем приводится ее разложение в ряд? Если так, то требуется задание точности вычисления ряда, и прожка будет немножно длиннее; а если нет - то это задачка для моего кота Мурзика между двумя глотками сметаны.
В первом случае придется во внутреннем цикле этот ряд хошь-не-хошь вычислять.
Тогда оно выглядело бы приблизно так (точность по умолчанию принял 0,001) :
Код:

program N2 ;
var a,b,h,x:real;

function Ln_x(arg,eps:real):real ;
var x1,d,y,xp,ix: real ;
begin
  d := 1 ;
  x1 := -arg ;
  ix := 2 ;
  xp := arg ;
  y := arg ;
  while Abs(d)>eps do
   begin
    xp := xp*x1 ;
    d := xp / ix ;
    ix := ix + 1.0 ;
    y := y + d ;
   end ;
  Ln_x := y 
end ;

begin
  writeln('a, b, h');readln(a,b,h);
  x:=a;
  while x<b do
    begin
      if x<-0.999 then writeln(x:0:6,' undefined')
      else writeln (x:8:6,'  ',Ln_x(x,0.001):8:6) ;
      x:=x+h;
    end;
  readln;
end.

Поскольку члены ряда знакопеременные, точнее было бы в качестве результата взять сумму последней и предпоследней иттерации, поделенную на 2, но тут точно получишь 2 от препода: "не мог быть ты сам таким вумным!"

Последний раз редактировалось digitalis; 30.01.2018 в 14:22.
digitalis вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить код без использования циклов.. Predator199 PHP 17 13.11.2014 16:37
Организация циклов Alesia_Lesia Помощь студентам 0 17.11.2013 21:30
Использование циклов xopbka Visual C++ 0 13.12.2012 21:01
ОРГАНИЗАЦИЯ ЦИКЛОВ M@ri Помощь студентам 2 18.12.2011 17:37
Выбор циклов turtles Общие вопросы по Java, Java SE, Kotlin 1 18.05.2011 11:05


01:39.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru