Помощь - Поиск - Пользователи - Календарь
Полная версия: Прога Таблица по закону
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
KuTa
Вот такая вот программа


{Nazvanie progi}
Program Function_F(x,t);
{Podluchaem biblioteku}
uses crt;
{Ob`yavlyaem peremennie}
Var x,t:integer;
{Poehali}
begin
{Chistim ekran}
clrscr;
{Delaem verhnuy chast` tablici}
writeln('x/t   1     2     3    4     5     6     7     8     9     10');
{cikl po x}
for x:=1 to 10 do
begin
{delaem bokovuy chast` tablici}
  write(x);
{cikl po t}
for t:=1 to 10 do
{vivodim krasivo znacheniya proizvol'nogo zakona x/t=x*t*t}
if (t=1)and(x=10) then write(x*t*t:5) else  write(x*t*t:6);
writeln;
end;
{press any key}
Readln;
{stop}
End.


А теперь преподаватель попросил сделать следующее,чтоб таблица считалась не по закону

x*t*t:5


а по следующему закону:

dfi2(t,x)=(fi(t-1,x+1)-2.0*fi(t-1,x)+fi(t-1,x-1))/(dx*dx)


и написал мне изменения в программе такие вот и сказал причесать её,попогите плз. Вот прога которая измененная. С новым законом,что удалить из старой надо?


{Nazvanie progi}
Program Function_F(x,t);
{Podluchaem biblioteku}
uses crt;
{Ob`yavlyaem peremennie}
Var x,t:integer;
    fi(0:10, 0:10):real;
    dfi2(0:10, 0:10) :real;
    dx:real;
{Poehali}
begin
{Chistim ekran}
clrscr;
{Delaem verhnuy chast` tablici}
writeln('x/t   1     2     3    4     5     6     7     8     9     10');
{cikl po x}
for x:=0 to 10 do
       fi(0, x)=0.0
end;
dx=0.1;
for x:=1 to 10 do
begin
{delaem bokovuy chast` tablici}
  write(x);
{cikl po t}
for t:=1 to 10 do
for x:=1 to 9 do
    dfi2(t,x)=(fi(t-1,x+1)-2.0*fi(t-1,x)+fi(t-1,x-1))/(dx*dx)
end;
{vivodim krasivo znacheniya proizvol'nogo zakona x/t=x*t*t}
if (t=1)and(x=10) then write(x*t*t:5) else  write(x*t*t:6);
writeln;
end;
{press any key}
Readln;
{stop}
End.

klem4
Ну во первых вычисление фунции лучше загнать в подпрограмму, будет удобнее и читаться проще. А вообще воспользуйся поиском -> Табулирование функции, таблица ...

Много примеров. Посмотришь как красиво выводить данные в виде таблицы.
volvo
{Nazvanie progi}
Program Function_F(x,t);
{Podluchaem biblioteku}
uses crt;
{Ob`yavlyaem peremennie}
Var
  x, t:integer;
  fi: array[0 .. 10, 0 .. 10] of real;
  dfi2: array[0 .. 10, 0 .. 10] of real;

  dx: real;

{Poehali}
begin
  {Chistim ekran}
  clrscr;

  {Delaem verhnuy chast` tablici}
  write('x/t');
  for x := 1 to 10 do write(x:6);
  writeln;

  dx := 0.1;
  for x:= 1 to 10 do begin
    {delaem bokovuy chast` tablici}
    write(x:2, '':1);

    {cikl po t}
    for t:=1 to 10 do begin
      dfi2[t, x] := (fi[t-1,x+1]-2.0*fi[t-1,x]+fi[t-1,x-1]) / (dx*dx);

      {vivodim krasivo znacheniya proizvol'nogo zakona x/t=x*t*t}
      write(dfi2[t, x]:6:3);
    end;
    writeln;
  end;

  {press any key}
  Readln;

{stop}
End.



Только вот массив fi у тебя не заполняется (вернее, заполняется нулями), поэтому в таблице будут одни нули...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.