Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 11:10   #1
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию паскаль.что неправильно?

А может кто-то подскажет почему не считает соответствующие минимальные значения...в таблице "0" в последних 2-х строках пишет....
вот программа:

uses crt;
Type mas=array[1..19,1..19] of real;
Type mas1=array[1..10] of real;
var F:mas;
X1,X2,minY,Z:mas1;
t1,z2,z1,t,dt,tk,tp,xp1,xp2,xk1,xk2 ,dx1,dx2,minF,minF1,mx,my,minX1,min X2:real;
i,n,j,u,grDriver,grMode,y,yy,x,xx,p x,py,px1,py1:integer;
grPath,l,s:string;

{подпрограмма формирования одномерных массивов}
procedure form(xn:mas1;xp,xk:real);
var dx,x:real;
k:integer;
begin
k:=10;
x:=xp;
dx:=(xk-xp)/(k-1);
for i:=1 to 10 do
begin
xn[i]:=x;
x:=x+dx;
end;
end;
{-----------------------------------------------------}
{подпрограмма-функция сопративления}
function te(h:real):real;
begin
te:=0.273*(sin(3*h+3)/h)/(cos(3*h+3)/h);
end;
{передаточная ф-я}
function r(a,b,te:real):real;
begin
r:=sqr(sqr(a))-0.9*b+sqr(te)+2*a+ sqr(a)*sqr(a)*sqr(a)*b/3;
end;
{Подпрограмма формирования двумерного массива}
procedure miF(x:mas;k1,k2:mas1;var miF:real;var miX1,miX2:real);
begin
miF:=F[1,1];
miX1:=k1[1];
miX2:=k2[1];
for u:=1 to 19 do
begin
for j:=1 to 19 do
begin
{Модуль1:поиск минимального элемента F(n,n)}
if F[u,j]<miF then
begin
miF:=F[u,j];
miX1:=k1[u];miX2:=k2[j];
end;
end;
end;
end;

{ПРОГРАММА}
begin
clrscr;
xp1:=1.2;
xp2:=-1.8;
xk1:=2.3;
xk2:=0.1;
tp:=-5;
tk:=4;
dt:=0.5;
t:=tp;
{---------формирование массивов х1 и х2-----------}
form(x1,xp1,xk1);
form(x2,xp2,xk2);
{-------------------------------------------------}
writeln;
writeln(' Начало таблицы');
Writeln(' |-----|---------|--------|--------|------------|----------|');
Writeln(' | i | T | Z | minF | X1min | X2min |');
Write(' |-----|---------|--------|--------|------------|----------|') ;
{цикл по времени }
for i:=1 to 19 do begin
{обращение к подпрограмме-функции а(t)}
Z[i]:=te(t);writeln;
for u:=1 to 10 do
begin
for j:=1 to 10 do
begin
F[u,j]:=r(x1[u],z[i],x2[j]);
end;
end;
{определение минимума двумерного массива F(10,10) и соответствующих значений x1 и x2}
miF(F,X1,X2,minF,minX1,minX2);
minY[i]:=minF;
if i=10 then begin
readln;
writeln(' Конец таблицы');
end;
if ((i>=1)and(i<9)) then
begin
writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:3,' |',minF:1:1,' |' ,minX1:2:0,' | ',minX2:4:2,' |');
write(' |-----|---------|--------|--------|------------|----------|');
end;
if i=9 then
begin
writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:3,' |',minF:1:1,' |',minX1:2:2,' | ',minX2:4:2,' |');
write(' |-----|---------|--------|--------|------------|----------|');
end;
if i=10 then
begin
writeln(' |-----|---------|--------|--------|------------|----------|');
writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:4,' | ',minF:1:1,' |',minX1:2:2,' | ',minX2:4:2,' |');
write(' |-----|---------|--------|--------|------------|----------|');
end;
if ((i>=11)and(i<20)) then
begin
writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:2,' | ',minF:8:3,' |',minX1:4:2,' | ',minX2:4:2,' |');
write(' |----|-------|----------|----------|-------|--------|');
end;
if i=19 then
begin
writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:2,' | ',minF:8:3,' |',minX1:4:2,' | ',minX2:4:2,' |');
write(' |----|--------|-----------|----------|-----|--------------|');
end;
t:=t+dt;
end;
Writeln;Writeln;Writeln;Writeln;Wri teln;
readln;end.

Последний раз редактировалось AndrewPl; 29.05.2010 в 21:44.
AndrewPl вне форума Ответить с цитированием
Старый 29.05.2010, 20:50   #2
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию

помогите пожалуйста,я в недоумении(((
minX1 и minX2 не считает(((((
AndrewPl вне форума Ответить с цитированием
Старый 29.05.2010, 21:26   #3
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Код:
 procedure form(xn:mas1;xp,xk:real);
перепиши как:
Код:
 procedure form(xp,xk:real; var xn:mas1;);
Orakul89 вне форума Ответить с цитированием
Старый 29.05.2010, 21:28   #4
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Orakul89 Посмотреть сообщение
Код:
 procedure form(xn:mas1;xp,xk:real);
перепиши как:
Код:
 procedure form(xp,xk:real; var xn:mas1;);
ок,спасибо,сейчас попр-ю))
AndrewPl вне форума Ответить с цитированием
Старый 29.05.2010, 21:34   #5
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию

не помогло((((((что ж такое?..((
AndrewPl вне форума Ответить с цитированием
Старый 29.05.2010, 21:37   #6
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

а да а чему у Вас равно n в
Код:
procedure miF(x:mas;k1,k2:mas1;var miF:real;var miX1,miX2:real);
По-моему она равна 0.
Orakul89 вне форума Ответить с цитированием
Старый 29.05.2010, 21:43   #7
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию

там 19,у меня в проге я "n" прописал числом,чтобы меньше путаться(((
AndrewPl вне форума Ответить с цитированием
Старый 29.05.2010, 21:48   #8
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

а почему у тебя там 19?? если Х1 и Х2 до 10 та и F 10х10??
Orakul89 вне форума Ответить с цитированием
Старый 29.05.2010, 21:55   #9
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию

n = (tk-tp)/dt+1 ,где t є [-5;4],а dt=0.5
но я менял только что на 10 - не помогло.....как было "0" так и есть(

Последний раз редактировалось AndrewPl; 29.05.2010 в 22:00.
AndrewPl вне форума Ответить с цитированием
Старый 29.05.2010, 22:35   #10
AndrewPl
Пользователь
 
Регистрация: 23.04.2010
Сообщений: 52
По умолчанию

Ура))))я нашёл ошибку!))
Orakul89,спасибо за помощь!дело в :
{передаточная ф-я}
function r(a,b,te:real):real;
begin
r:=sqr(sqr(a))-0.9*b+sqr(te)+2*a+ sqr(a)*sqr(a)*sqr(a)*b/3;
end;
вот так:

{передаточная ф-я}
function r(a,b,er:real):real;
begin
r:=sqr(sqr(a))-0.9*b+sqr(er)+2*a+ sqr(a)*sqr(a)*sqr(a)*b/3;
end;
и потом
F[u,j]:=r(x1[u],z[i],x2[j]);
тоесть я,дурак, написал в одной функции переменной имя другой функции...
AndrewPl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что неправильно? helavisa Общие вопросы C/C++ 18 02.06.2009 17:51
Паскаль. Что не так? Кириллович Помощь студентам 7 25.05.2009 19:09