Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Табулирование сложной функции, Вложенные циклы, реализация программы 
:(
    Опции темы
Upgrader
Дата 1.10.2008, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



В задании есть такая функция: user posted image

А само задание: табулирование сложной функции с использованием вложенных циклов. Язык Pascal.

Начал писать программу:
Код

Program prog;
  var
   x,y,xo,xn,hx: real;
  Begin
    Writeln('ввод границ интервалов:');
    Read(xo,xn);
    Writeln('Ввод шага изменения:');
    Read(hx);
    x:=xo;
    Repeat {основной цикл}
      if ???
        then
         ???
      else
       if ???
          else
            WriteLn('Функция не определена');

      Writeln('X=',x:6:3,' Y=',y:6:3);
      x:=x+hx;
      Until x>xn+hx/2
  end.

Но вот проблема.. так и не дописал. Помогите пожалуйста!
PM MAIL WWW   Вверх
TwisT_X
Дата 1.10.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: 1
Всего: 4



Upgrader, вот примерный код только я немного подзабыл синтаксис паскаля так что могут быть ошибки в мат фунциях  smile 

Код

program prog1;
var x, y: real;
      n: integer;
begin
  writeln('Vvedite x ');
  readln(x);
  y:= 0;
  if ((x>0,1) and (x<0,5)) then
    for n:= 0 to 10 do
      y:= y+ power(x, n+1)/(2*n+3);
   else if ((x>0,5) and (x<1)) then
      begin
        y:= (x+1)/3;
        for n:= 1 to 7 do y:=y+(power(x,4) + power(x, 2n))/(8*n+1);
      end;
   // И тут вывод результата :)
end.



--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Upgrader
Дата 2.10.2008, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



TwisT_X,      спасибо!!! 
Примерно так и думал, но все равно бы ошибся  smile 
Да, кстати. В паскале нет встроенной функции power, и вообще никакие функции (для этого конкретного задания) не нужно использовать. А как бы сделать просто, но и без подобных функций? Как-то умножением в том цикле что-ли как-то вроде бы... никак не доеду  smile
PM MAIL WWW   Вверх
volvo877
Дата 2.10.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(Upgrader @  2.10.2008,  02:42 Найти цитируемый пост)
А как бы сделать просто, но и без подобных функций? Как-то умножением в том цикле что-ли как-то вроде бы...
Вот так:
Код
program prog1;
var x, dx, y: real;
    x_start, x_finish: real;
    n: integer;
    is_ok: boolean;

    x_nplus1, x_2n: real; { <--- здесь будут храниться значения X^(n+1) и X^(2n) }
begin
  write('Xst = '); readln(x_start);
  write('Xfn = '); readln(x_finish);
  write('DX = '); readln(dx);

  x := x_start;
  repeat

    y := 0;
    is_ok := true;
    if ((x > 0.1) and (x < 0.5)) then begin
      x_nplus1 := x;
      for n := 0 to 10 do begin
        y := y+ x_nplus1 / (2*n + 3);
        x_nplus1 := x_nplus1 * x;
      end
    end
    else
      if ((x >= 0.5) and (x < 1)) then begin { <--- здесь было неправильное условие }
        x_2n := sqr(x);
        for n:= 1 to 7 do begin
          y:=y+(sqr(sqr(x)) + x_2n) / (8*n+1);
          x_2n := x_2n * sqr(x);
        end;
        y := y * (x+1)/3; { <--- сначала посчитали сумму, потом домножили ее... }
      end
      else is_ok := false;

    Write('X=',x:6:3, ' Y=');
    if is_ok then writeln(y:6:3)
    else writeln(' (N/A)');

    x := x + dx;
  until x > x_finish;
end.
Кстати, на картинке в первом случае в числителе написано X^(n + 1). Это опечатка? Или у тебя там еще N где-то потерялось?
PM MAIL   Вверх
Upgrader
Дата 2.10.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



volvo877, Спасибо большое!
Цитата

Кстати, на картинке в первом случае в числителе написано X^(n + 1). Это опечатка? Или у тебя там еще N где-то потерялось?

Это уже не так важно, главное понял как оно написано, а сам изменю если нужно будет  smile  
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.