
7 Программа
PROGRAM tz;
USES crt;
TYPE
MATR = ARRAY [1...6, 1...6] OF INTEGER; MASS-ARRAY [1...6] OF INTEGER;
LABEL 1, 2;
VAR
C,X: MATR; K,L,A,B,U,V: MASS;
S,W,Z,MIN, МАХ,В1,А1Д, J,M,N,T: INTEGER;
KBD, Gl: CHAR;
BEGIN
clrscr;
WRITELN; WRITELN; WRITELN; WRITELN;
WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN ('Выполнил студент группы П-10 Коваленко А.Г.')
WRITELN ('... Нажмите ввод...');
REPEAT UNTIL KEYPRESSED;
WRITELN (CHAR(12));
WRITE ('Введите количество заводов N= '); READ(N);
WRITELN; WRITELN;
WRITE ('Введите мощности заводов A[l]:');
WRITELN;
Al: = 0;
FOR I: = 1 TO N DO BEGIN READLN (A[I]);
Al: = A1+A[I]
END;
WRITE ('Введите количество складов M= '); READ(M);
WRITELN; WRITELN;
WRITE ('Введите потребности складов B[J]:');.
WRITELN;
Bl: = 0;
FOR I := 1 TO M DO BEGIN
READLN (B[I]);
Bl: =B1 +B[I]
END;
WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN;
WRITELN ('...Нажмите ввод...');
READ (KBD,G1);
FORI: =1 TO N DO
FOR J: = 1 TO M DO C[I,J]: = 0;
WRITE ('Введите матрицу стоимостей С [I, J]');
WRITELN;
FOR I: =1 TON DO BEGIN
FOR J: = 1 TO M DO
BEGIN
READ (C[I,J]);
END;
END;
WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN;
WRITELN ('...Нажмите ввод...');
READ (KBD,G1);
WRITELN (CHAR(12));
IF A1 <>B1 THEN
BEGIN
WRITELN ('Открытая модель');
END;
IF A1 >B1 THEN
BEGIN
WRITELN ('Добавление столбец');
М: = М+ 1;
FOR I: =1 ТО М DO C[I,M]: = 0;
END;
IFB1 > A1 THEN
BEGIN
WRITELN ('Добавление строки');
N:=N+ 1;
FOR I: = 1 TON DO
END;
WRITELN;
WRITE ('Введите первоначальный опорный план X[I,J]');
WRITELN;
FORI: = 1 TO N DO
BEGIN
FOR J: = 1 TO M DO
BEGIN
READ (X[I,J]);
END;
END;
W: = 1;
1: FOR I: = 1 TO N DO U[I]: = 999
FOR I: = 1 TO M DO V[I]: = 999
U[1]: = 0;
FOR T: = 1 TO 10 DO
BEGIN
FOR I: = 1 TO N DO
FOR J: = 1 TO M DO
BEGIN
IF (X[I,J]<>0) AND (V[J]<>999) THEN U[I]: = C[I,J] - V[J];
IF (X[I,J]<>0) AND (U[I]<>999) THEN V[J]: = C[I,J] - U[I]; END;
END;
WRITELN;
WRITELN ('...Нажмите ввод...');
READ (KBD, Gl);
WRITELN (CHAR(12));
WRITELN ('Таблица потенциалов N,W');
WRITELN;
FOR I: = 1 TO M DO
BEGIN
WRITE ('V[\I,'] =\ V[I])
END;
FOR I: = 1 TO N DO
BEGIN
WRITELN
FOR J: = 1 TO M DO
WRITE (X[I,J]: 5);
MAX: - -999;
FOR I: = 1 TO N DO
FOR J: = 1 TO M DO
IF X[I,J] = 0 THEN
IF (U[I] + V[J]>C[I,J]) THEN
IF (U[I] + V[J]-C[I,J]) >MAX
THEN
BEGIN
MAX: = (U[I] + V[J]) - С [I, J]; K[1]: = I;
L[l]: = J;
END;
Z: = 0;
IF MAX = -999 THEN BEGIN
FOR I: = 1 TO N DO
FOR J: = 1 TO M DO
IF X[I,J]<>0 THEN Z: = Z + X[I,J]*C[I,J];
WRITELN;WRITELN;WRITELN; WRITELN ('Z-,Z);
GOTO 2; END;
WRITE('Вершинацикла=\К[1]Д\Ц1]);
WRITELN;
WRITE ('Введите вершины цикла');
READ (Т);
WRITELN;
FOR I: = 2 TO T DO
BEGIN
READ (K[I]);
READ (L[I]);
END;
MIN: = -999;
FOR I: = 2 TO T DO
BEGIN
S: = I MOD 2;
IF (S = 0) AND (X[K[I],L[I]]<MIN) THEN MIN: = X[K[I],L[I]]
END;
FOR I: = 1TO T DO
BEGIN
S: = 1 MOD 2;
IF S<>0 THEN X[K[I], L[I]]: = X[K[I], L[I]] + MIN ELSE
X[K[I],L[I]]: = X[K[I],L[I]] - MIN;
END;
W: = W+l;
GOTO 1;
2: WRITELN ('Условие оптимальности выполняется ');
WRITELN ('Опорный план - является оптимальным');
WRITELN ('Конец вычислений.');
READLN;
END.