Помощь - Поиск - Пользователи - Календарь
Полная версия: Прога Таблица по закону
Форум «Всё о Паскале» > 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 у тебя не заполняется (вернее, заполняется нулями), поэтому в таблице будут одни нули...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.