Помощь - Поиск - Пользователи - Календарь
Полная версия: Таблица значений функции
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Домовой
Здравствуйте.
Опять наткнулся на проблему (для меня) с задачей.
Она звучит так:
Построить таблицу... (а дальшее картинку прикрепил).
Кто-нибудь может объяснить хотя-бы задание или каким-методом его выполнять.
Я уже вроде-как понял, что через циклы.
На похожие задачи у меня есть примеры,
но они гораздо легче этой.
Спасибо.
-Volvo-
Домовой, ищи примеры на "табулирование функции" в поиске...
Домовой
Ага... но у меня фраза такая "t изменяетя от а до b".
Это немного странно для меня...
т.е. какие переменные должен вводить пользователь с клавиатуры?
Думаю, что a, b, h и ... t ?
-Volvo-
Вот тебе простой пример (все значения заданы как переменные, хотя некоторым, как например, -Raidy-, это и не нравится, но мне просто гораздо удобнее отлаживать программы...)
function f(x, s: real): real;
begin
f := exp(sqr(x)+sqr(s));
end;
function s(t: real): real;
begin
s := 1 + 2 * t - 3 * sqr(t);
end;


var
T, a, b, h: real;
X: real;
begin
a := 1.2; b := 1.4; h := 0.01; { Все это вводится с клавиатуры }
X := 1.12; { Это - тоже }

{ А вот отсюда и ниже - все вычисляется в программе }
T := a;
while T <= (b + h) do begin
writeln( 't = ', T:8:5, ' f(s) = ', f(x, s(t)):10:5 );
T := T + h;
end;
end.
Домовой
Гм... volvo... кажись понял, но вот что у меня получается - постоянное зацикливание...
просмотрел - почему то параметры не меняются...

Код

program moe;

var t, a, b, h, f, s: real;
    n: byte;

begin

   write('Введите значение x: ');
   readln(x);
   write('Введите промежуток [a,b]: ');
   readln(a, b);
   write('Введите шаг h: ');
   readln(h);
   writeln;
   n:=1; {номер позиции по порядку}
   t:=a;

   while t<=(b+h) do
      begin
         s:=1+2*t-3*sqr(t);
         f:=exp(sqr(x)+sqr(s));
         n:=n+1;
         writeln(n:5, ' | ', s:5:0, ' | ', f:5:0);
      end;

end.


t ведь так и должно вычисляться?
Я вроде с твоего примера взял.
Иль опять шо-то напутал?
klem4
а ты t в цикле не меняешь. .. добавь t := t + h в конце тела цикла
-Volvo-
Ты значение T не изменяешь в цикле...
У меня это делает строка
T := T + h;
Домовой
ай... вот и поспешишь smile.gif
Спасибо за помощь ))
Если кому понадобится, вот рабочая версия:
Код

program zikl_6;

var t, a, b, h, f, s, x: real;
    n: byte;

begin

   write('‚ўҐ¤ЁвҐ §­ зҐ­ЁҐ x: ');
   readln(x);
   write('‚ўҐ¤ЁвҐ Їа®¬Ґ¦гв®Є [a;b] зҐаҐ§ Їа®ЎҐ«: ');
   readln(a, b);
   write('‚ўҐ¤ЁвҐ и Ј h: ');
   readln(h);
   writeln;
   n:=0; {ќв® ­®¬Ґа Ї®§ЁжЁЁ Ї® Ї®ап¤Єг}
   t:=a;

   while t<=(b+h) do
      begin
         s:=1+2*t-3*sqr(t);
         f:=exp(sqr(x)+sqr(s));
         n:=n+1;
         writeln(n:5, ' | ', s:5:0, ' | ', f:5:0);
         t:=t+h;
      end;
   readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.