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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 15:40   #1
Angelholy
Пользователь
 
Аватар для Angelholy
 
Регистрация: 22.03.2009
Сообщений: 22
По умолчанию

Вот сделал прогу на решение транспортной задачки методом северо -западного угла.Делал в АБС делал с исходника ,но работать не желает.
Подлатайте пожалуйста.

ЗАбыл написать что нужно найти.
В некоторой местности в двух пунктах А и В имеется потребность в дополнительном транспорте.
В пункте А требуется 5 дополнительных автобусов а в пункте В - 7 автобусов. Известно, что 3,4,5 автобусов могут быть получены соответственно из гаражей G1,G2,G3.
Как следует распределить эти автобусы между пунктами А и В, чтобы минимизировать их суммарный пробег?

Код:
  uses crt,ms,vv,uv;
begin
clrscr
Enter,
MinSt;
repeat DrawTab
until   UVCalc:
Res;
end.




unit ent;
interface
procedure Enter;
implementation
uses op;
procedure Enter;
begin
for i:= 1 to W-l do
for j:= 1 to H-l do
begin
write('Enter ',i,'',j,'':');
readln(a[i,j].K);
end;
for i:=l to H-1 do
begin
write('Enter Zapas',i,':');
readln (a[ W,i] .C);
 end;
for i:=l to W-l do begin
write('Enter Potrebnost' ,i,':');
readln(a[i,H].C);
end;
writeln('------------------')
end;
end.




unit ms;

interface
procedure MinSt;

implementation
uses op;
procedure MinSt;
begin
i:=0;
j:=1;
ml:=0;
m2:=0;
repeat
if m 1 <m2 then inc(j)
 else inc(i);
s1:=0;
s2:=0;
for l:=1 to W-1 do
s1:=s1+a[1,j].C;
for 1:=1  to H-l do
s2:= s2+a[i,1].C;
ml:=a[W,j].C-sl;
m2:=a[i,H].C-s2;
a[i,j].C:= min(m1,m2);
until (i=(W-1)) and (j=(H-1));
end;
end.


unit uv;
interface
function UVCalc: Boolean;

implementation
uses op;

function UVCalc: Boolean;
var R: Boolean;

begin
R:= True;
{U and V}
for i:= 1 to H-1 do u[i].I:= False;
for i:= 1 to W-1 do v[i].I:= False;
u[l].I:=True;
u[l].X:=0;
for i:=l to W-l do
for j:=l to H-l  do
if a[i,j].C > 0 then
begin
writeln('u',j,'+V',i,'=',a[i,j].K);
if u[j].I then begin
     v[i].I:= True;
     v[i].X:= a[i,j].K-u[i,j].X;
end;
if v[i].I then begin
    u[j].I:=True;
    u[j].X:= a[i,j].K-v[i].X;
end;
end;
writeln;
for i:= 1 to H-1 do  writeln('U',i,'=',u[i].X);
for i:= 1 to W-1 do writeln('V',j,'=',v[i].X);

writeln;
{D}
for i:=l to W-l do
for j:= 1 to H-1 do
If a[i,j].C = 0 then
begin
d[i,j]= u[j].X+v[i].X-a[i,j].K;
writeln('D',j,i,'=',d[i,j]);
{cicle}
if d[i,j] > 0 then
begin
R:= False;
if i>1 then
begin
q:= min(a[i-1,j].C, a[i,j+1].C);
a[i,j].C:= a[i,j].C+q;
a[i-l,j].C:= a[i-l,j].C-q;
a[i,j+1].C:=  a[i,j+l].C-q;
a[i-1,j+1].C:= a[i-1,j+1].C+q;
end
else
begin
q:= min(a[i+l,j].C, a[i,j+l].C);
a[i,j].C:= a[i,j].C+q;
a[i+1,j].C:= a[i+1,j].C-q;
a[i,j+1].C:=a[i,j+1].C-q;
a[i+l,j+1].C:=à[i+1, j+1].C+q;
end;
end;
end;
writeln('-------------------');
UVCalc:=R;
end;
end.






Unit vv;
interface

procedure DrawTab;
procedure Res;

implementation
uses op;
procedure DrawTab;
begin
for j:= 1 to H do
begin
for i:=l to W  do
if (i<>W) and (j<>H) then
write(a[i,J].C,' ');
writeln;
end;
writeln('-------------');
end;


procedure Res;
var Z: Integer,
begin
z:=0;
writeln('X:');
for j:= 1 to H-1 do
begin
for i:=1 to W-1 do
begin
z:=z+a[i,j].C*a[i,j].K;
write(a[i,j].C,' ');
end;
writeln;
end;
writeln('');
write('Z=',z);
readln;
end;
end.





unit op;
interface
const W=3;
H=4;
type TType = record
C: Integer;
K: Integer;
end;
UVType = record
I: Boolean;
X: Integer;
end;

var a: array [1..W,1..H] of TType;
d: array [1..W-l,1..H-1] of Integer;
u: array [1..H-1] of UVType;
v: array [1..W-1] of UVType;
i,j,1,ml ,m2,sl,s2,q: integer;
function Min(a,b:integer):integer;

implementation
function Min(a,b:integer): integer;
var R: integer;
begin
r:=a;
if b<a then r:=b;
min:=r,
end;
end.
Вот код(правила тута строгие)

Последний раз редактировалось Stilet; 29.05.2009 в 17:02.
Angelholy вне форума Ответить с цитированием
Старый 31.05.2009, 09:21   #2
Angelholy
Пользователь
 
Аватар для Angelholy
 
Регистрация: 22.03.2009
Сообщений: 22
По умолчанию

КТО ПОМОЖЕТ ААА????
Angelholy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с Курсовой !!! TRAITOR Фриланс 3 10.05.2008 14:29
Курсовой за $ ChiLi Фриланс 1 21.05.2007 23:28