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

- при несоблюдении размерности исходных данных выводится сообщение об ошибке и вычисления не производятся;

- при не заданной массе или цене одно из товаров выводится сообщение об ошибке и вычисления не производятся.

Контрольный пример:

Исходные данные: грузоподъёмность = 11; масса первого вида товара = 3; масса второго вида товара = 5; масса третьего вида товара = 8; цена первого вида товара = 8; цена второго вида товара = 14; цена третьего вида товара = 23.

Выходные данные: количество товара первого вида = 1; количество товара второго вида = 0; количество товара третьего вида = 1; цена набора товаров = 31.

5. Дополнительные возможности

Дополнительные возможности отсутствуют.

6. Сообщение системному программисту

При отсутствии в каталоге с программой файла с примером входных данных будет выдано соответствующее сообщение (Рис. 1).

Рисунок 1 – Сообщение об отсутствии файла с примером

Необходимо восстановить файл с примером. Если копия файла не сохранилась, то можно создать его заново в любом текстовом редакторе и сохранить в формате txt. Содержание файла:

11

3

5

8

8

14

23

Пустые строки между группами чисел обязательны.

Приложение

Текст основного модуля.

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

#include <vcl.h>

#pragma hdrstop

#include "BagWin.h"

#include "Infr.cpp"

#include <limits.h>

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TCalcWin *CalcWin;

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

__fastcall TCalcWin::TCalcWin(TComponent* Owner)

   : TForm(Owner)

{

//формирование исходного вида таблицы

Goods->Cells[0][0] = "Масса";

Goods->Cells[1][0] = "0";

Goods->Cells[0][1] = "Цена";

Goods->Cells[1][1] = "0";

}

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

void __fastcall TCalcWin::AddGoodsClick(TObject *Sender)

{

/*в окне программы начального вида умецается 7 столбцов таблицы

поэтому, начиная с этого числа столбцов, при добавлении очередного столбца

нужно раздвигать окно программы на ширину ячейки до тех пор,

пока не достигнута граница экрана*/

if ((Goods->ColCount > 6) && (this->Width < Screen->Width))

   {

   this->Width += 72;   //раздвигаем окно

   Goods->Width += 72;  //раздвигаем таблицу

   OutPut->Width += 72; //раздвигаем поле вывода результата

   }

Goods->ColCount++;

Goods->Cells[Goods->ColCount - 1][0] = "0";

Goods->Cells[Goods->ColCount - 1][1] = "0";

}

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

void __fastcall TCalcWin::DelGoodsClick(TObject *Sender)

{

short i;

if (Goods->ColCount > 2)

   {

   if ((Goods->ColCount > 7) && ((Goods->ColCount * Goods->DefaultColWidth) <= Screen->Width))

      {

      this->Width -= 72;   //cдвигаем окно

      Goods->Width -= 72;  //cдвигаем таблицу

      OutPut->Width -= 72; //cдвигаем поле вывода результата

      }

   for (i = Goods->Col; i < (Goods->ColCount - 1); i++)

      {

      Goods->Cells[i][0] = Goods->Cells[i + 1][0];

      Goods->Cells[i][1] = Goods->Cells[i + 1][1];