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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2013, 09:39   #1
Астасья
 
Регистрация: 04.04.2011
Сообщений: 7
По умолчанию Транспортная задача(метод min стоимости)

Решить транспортную задачу методом min стоимости. Что не так???

Код:
program transport;  
uses crt;
var
i,j,n,m:integer;
sum,sum1,z1,z2,min,v:real;
c:array[1..50,1..50] of integer;
mas:array[1..50,1..50] of integer;
a:array[1..50] of integer;
b:array[1..50] of integer;



Procedure Vvod1;
Begin
write('Введите количество поставщиков= ');readln(n);
write('Введите количество потребителей= ');readln(m)
End;

Procedure Vvod2;
begin
 for i:=1 to n do
  begin
  write('Введите мощность ',i,' поставщика =');
  readln(a[i]);      //массив запасов
  end;
    for i:=1 to m do
     begin
     write('Введите спрос ',i,' потребителя =');
     readln(b[i]); //массив потребностей(спроса)
     end;
writeln;
end;

Procedure Stoimost;
begin
{ for i:=1 to n do
 for j:=1 to m do
    begin
    c[i,j]:=random(9); //массив стоимости перевозок
    end;    }
 for i:=1 to n do
 for j:=1 to m do
    begin
    write('c[',i,',',j,']=');
    readln(c[i,j]); //массив стоимости перевозок
    end;
end;

Procedure vivod;
begin
writeln('Мощность поставщиков:');
for i:=1 to n do writeln (,i,'поставщик= ',a[i]);
writeln;
writeln('Спрос потребителей:');
for i:=1 to m do writeln (,i,'потребитель= ',b[i]);
writeln;
writeln('Матрица стоимости перевозок:');
    for i:=1 to n do
     begin
      for j:=1 to m do
      write (c[i,j]:3);
      writeln;
     end;
end;

procedure minstoim;
begin
while sum>0 do
begin
    sum1:=0;
    for i:=1 to n do
    z1:=a[i];
    for j:=1 to m do
    z2:=b[j];
    sum1:=sum1+z1+z2;
    sum:=sum1;
    min:=c[1,1];
     for i:=1 to n do
     for j:=1 to m do
    begin
        if (min>c[i,j]) then min:=c[i,j];
            if a[i] >= b[j]
             then
              begin
              mas[i,j]:=b[j];
              a[i]:=a[i]-b[j];
              b[j]:=0;
              end
            else
           begin
           mas[i,j]:=a[i];
           b[j]:=b[j]-a[i];
           a[i]:=0;
           end;
     end;
end;
end;


Begin
Vvod1;
Vvod2;
Stoimost;
ClrScr;
vivod;
minstoim;
v:=0;
 for i:=1 to n do
  for j:=1 to m do
   begin
    v:=v+mas[i,j]*c[i,j];
   end;
writeln('Метод минимальной стоимости = ',v);
end.


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

Последний раз редактировалось Serge_Bliznykov; 21.03.2013 в 14:18.
Астасья вне форума Ответить с цитированием
Старый 21.03.2013, 10:13   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Мне кажется:
1. Нужно оформлять код так, чтобы его можно было читать (тег CODE).
2. "Что не так" - это сначала Вы должны объяснить. Почему Вы решили, что что-то не так?
s-andriano вне форума Ответить с цитированием
Старый 21.03.2013, 16:37   #3
Астасья
 
Регистрация: 04.04.2011
Сообщений: 7
По умолчанию

Ответ неправильный выводит,поэтому что-то не так....
Астасья вне форума Ответить с цитированием
Старый 21.03.2013, 19:36   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А почему Вы решили, что ответ неправильный?
s-andriano вне форума Ответить с цитированием
Старый 21.03.2013, 23:31   #5
Астасья
 
Регистрация: 04.04.2011
Сообщений: 7
По умолчанию

Я сначала решила задачу в ручную,а потом попыталась программу написать....Так что не так в коде????????????????????????
Астасья вне форума Ответить с цитированием
Старый 22.03.2013, 02:59   #6
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,657
По умолчанию

Цитата:
1. Нужно оформлять код так, чтобы его можно было читать (тег CODE).
Очевидно, этого не достаточно. Нужно расставлять отступы так чтобы проглядывали конструкции.
Код:
writeln('Метод минимальной стоимости = ',v);
Метод равен числу... бывает же такое
Цитата:
Так что не так в коде????????????????????????
Да хотя бы вот это не имеет смысла (первое что бросилось в глаза, т.к. не читал):
Код:
    for i:=1 to n do
    z1:=a[i];
    for j:=1 to m do
    z2:=b[j];
Благими намерениями устлана дорога на programmersforum.ru

Последний раз редактировалось MihalNik; 22.03.2013 в 03:01.
MihalNik вне форума Ответить с цитированием
Старый 22.03.2013, 07:41   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вообще, весь этот участок:
Код:
    sum1:=0;
    for i:=1 to n do
    z1:=a[i];
    for j:=1 to m do
    z2:=b[j];
    sum1:=sum1+z1+z2;
    sum:=sum1;
беcсмыслен.
Всё это пишется гораздо короче:
Код:
    sum:=0;
    for i:=1 to n do
      for j:=1 to m do
      sum:=sum+a[i]+b[j];
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphy Транспортная зад Метод северо-западного угла felixXx Помощь студентам 3 15.06.2012 22:42
Pascal метод минимальной стоимости The_Joker Помощь студентам 2 08.10.2011 18:25
транспортная задача. метод потенциалов 4eKucT Помощь студентам 5 01.06.2007 16:30