czwartek, 16 października 2025

Discrete knapsack problem - C++ Builder

 



void __fastcall TForm1::alg_Greedy(float a, float x[3], float y[3], float z[3])
{
double temp=a;
const int k=3;
int i;
for(i=0;i<k;i++)
{
if(x[i]>temp)
break;
z[i]=1;
temp-=x[i];
if(i<k)
z[i]=temp/x[i];
}
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{

 Edit1->Text="";
 Edit2->Text="";
 Edit3->Text="";
 Edit4->Text="";
 Edit5->Text="";
 Edit6->Text="";
 Edit7->Text="";
 Edit8->Text="";
 Edit9->Text="";
 Edit10->Text="";
 Label1->Caption="Size = ";
 Label2->Caption="x[0]";
 Label3->Caption="x[1]";
 Label4->Caption="x[2]";
 Label5->Caption="y[0]";
 Label6->Caption="y[1]";
 Label7->Caption="y[2]";
 Label8->Caption="z[0]";
 Label9->Caption="z[1]";
 Label10->Caption="z[2]";
 Button1->Caption="&RUN";

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 ListBox1->Items->Clear();
 const int k=3; int i;
 float Size, Sum;
 float x[k]; float y[k]; float z[k];
 Sum=0.0;
 Size=StrToFloat(Edit1->Text);
 x[0]=StrToFloat(Edit2->Text);
 x[1]=StrToFloat(Edit2->Text);
 x[2]=StrToFloat(Edit4->Text);
 y[0]=StrToFloat(Edit5->Text);
 y[1]=StrToFloat(Edit6->Text);
 y[2]=StrToFloat(Edit7->Text);
 z[0]=StrToFloat(Edit8->Text);
 z[1]=StrToFloat(Edit9->Text);
 z[2]=StrToFloat(Edit10->Text);
 alg_Greedy(Size,x,y,z);
 for(i=0;i<k;Sum+=z[i]*y[i],i++)
 {
ListBox1->Items->Add(IntToStr(i)+")  "+FloatToStr(x[i])+"   "+FloatToStr(y[i])+"   "+
FloatToStr(z[i])+"    \n");
 }
 Label11->Caption="Total: "+FloatToStr(Sum);

}


Brak komentarzy:

Prześlij komentarz