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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 18:22   #1
Biocid
 
Регистрация: 15.10.2012
Сообщений: 5
Плохо нужна помощ в переводе программы из Delphi в Turbo Pascal

Код:
program simplex;
	
uses SysUtils;
const mm = 100; nn = 100;

var A : array[1..mm, 1..nn] of double;
    fun : array[1..nn] of integer;	    
    m, n : integer;			           

    basis : array[1..nn] of integer;	
    i, j : integer;
    x : array[1..nn] of double;        

procedure solve;
var i, j, i0, j0 : integer;
    tmp : double;
    opt : boolean;
begin
    opt := false;
    repeat
        j0 := 1; i0 := 0;
        while (j0 < m+n+1) and (A[m+1, j0] >= 0) do inc(j0);
        if A[m+1, j0] >= 0 then opt := true;

        if not opt then begin
            tmp := 10000;
            for i := 1 to m do
                if (A[i, j0] > 0) and (A[i, m+n+1] / A[i, j0] < tmp) then
                begin
                    tmp := A[i, m+n+1] / A[i, j0]; i0 := i
                end;
           
            basis[i0] := j0;                        

            for i := 1 to m + 1 do
                    if i <> i0 then
                    begin
                            tmp := A[i, j0];
                            for j := 1 to m + n + 1 do
                                   A[i,j] := A[i,j] - A[i0,j]*tmp/A[i0,j0];
                    end;
            tmp := A[i0, j0];
            for j := 1 to m + n + 1 do
                    A[i0, j] := A[i0, j] / tmp;
        end;
    until opt;
end;

begin
    assign(input, 'input.txt'); reset(input);

    read(n); read(m);

    for i := 1 to n do read(fun[i]);     

    for i := 1 to m do
        for j := 1 to n do
            read(A[i, j]);

    for i := 1 to m do
        read(A[i, n+m+1]);               
    for i := 1 to m do                  
        A[i, n+i] := 1;
    fillchar(A[m+1], sizeof(A[m+1]), 0);


    for i := 1 to m do
        basis[i] := n + i;
    for j := 1 to n do
        A[m+1,j] := -fun[j];        


    solve;                             

    for i := 1 to m do
        if basis[i] <= n then
             x[basis[i]] := A[i, m+n+1];

    for i := 1 to n do writeLn('x[', i, '] = ', x[i]:0:3);
    writeLn('min f(x) = ', A[m+1, m+n+1]:0:3); 
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.12.2012 в 09:30.
Biocid вне форума Ответить с цитированием
Старый 10.12.2012, 18:46   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

SysUtils заменить на CRT.
Больше не вижу никаких препятствий.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.12.2012, 18:56   #3
Biocid
 
Регистрация: 15.10.2012
Сообщений: 5
По умолчанию

[QUOTE=BDA;1147119]SysUtils заменить на CRT.
это всё делал но пишет что
Structure too large
var A : array[1..mm, 1..nn] of double;
Biocid вне форума Ответить с цитированием
Старый 10.12.2012, 19:08   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сделайте, например, так:
Код:
var A : array[1..10, 1..10] of single;
Вадим Мошев вне форума Ответить с цитированием
Старый 11.12.2012, 09:33   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, точнее,
Код:
const mm = 80; nn = 80;
только учтите, что n и m (у вас они читаются из файла 'input.txt') не могут быть больше, чем значения nn и mm
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в переводе кода с Turbo Pascal на Fortran abit-2010 Помощь студентам 0 05.07.2011 22:55
Нужна помощ на Delphi ВЕКО Помощь студентам 1 19.04.2008 14:13
Нужна помощ по .NET для Delphi Cantana Общие вопросы .NET 13 09.04.2008 09:55
Нужна помощ в написании программы Dimich Фриланс 3 19.12.2007 02:53