Руководство программиста программы «Задача о рюкзаке», страница 4

while (f[m] > 0) //собираем оптимальный набор пока цена не нулевая

   {

   f3[i] = f1[m]; //заносим в оптимальный набор номер товара, добавляющего максимальную цену к набору массой m

   m = f2[m]; //переходим к набору, оставшемуся после извлечения товара

   i++; //увеличиваем количество товаров в оптимальном наборе

   }

s = "(";

for (k = 0; k < N; k++) //считаем и выводим количество товаров каждого вида в оптимальном наборе

   {

   cnt = 0;

   for (j = 0; j < i; j++)

      if (f3[j] == k)

         cnt++;

   s = s + IntToStr(cnt) + ";";  //собираем значения количеств видов товаров

   }

s = s.Delete(s.Length(),1) + ")"; //удаляем ; после последней цифры и закрываем скобку

if (Canvas->TextWidth(s) > OutPut->Width)

   {

   OutPut->Height += Canvas->TextHeight(s);

   OutPut->ScrollBars = ssHorizontal;

   this->Height += Canvas->TextHeight(s);

   }

OutPut->Lines->Strings[0] = s;

Label1->Caption = "Цена набора " + IntToStr(f[M]) + " p.";

delete mass;

delete price;

delete f;

delete f1;

delete f2;

delete f3;

}

//---------------------------------------------------------------------------

void __fastcall TCalcWin::CapacityKeyPress(TObject *Sender, char &Key)

{

if (((Key < 48) || (Key > 57)) && (Key != 8) && (Key != 13))

   Key = 0;

}

//---------------------------------------------------------------------------

void __fastcall TCalcWin::InfClick(TObject *Sender)

{

ShowMessage("Программа выполнена студентом гр. ЗП-71 Воробьёвым М. В.");

}

//---------------------------------------------------------------------------

void __fastcall TCalcWin::HlpClick(TObject *Sender)

{

Note->Show();

}

//---------------------------------------------------------------------------

void __fastcall TCalcWin::ExitClick(TObject *Sender)

{

this->Close();

}

//---------------------------------------------------------------------------

void __fastcall TCalcWin::LoadFlClick(TObject *Sender)

{

TStringList *list;

TSearchRec rez;

if (FindFirst("Sample.txt", faAnyFile, rez) == 0) //ищем файл с примером

   {                                              //если найден

   list = new TStringList;

   list->LoadFromFile("Sample.txt"); //загрузить данные из файла в список строк

   Capacity->Text = list->Strings[0]; //и заполнить исходные данные

   Goods->ColCount = 4;

   Goods->Cells[1][0] = list->Strings[2];

   Goods->Cells[2][0] = list->Strings[3];

   Goods->Cells[3][0] = list->Strings[4];

   Goods->Cells[1][1] = list->Strings[6];

   Goods->Cells[2][1] = list->Strings[7];

   Goods->Cells[3][1] = list->Strings[8];

   }

else

   ShowMessage("Отсутствует файл с примером!");

FindClose(rez); //освободить ресурсы, задействованые для поиска

}

//---------------------------------------------------------------------------