Скачиваний:
15
Добавлен:
02.05.2014
Размер:
5.14 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop

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

#pragma argsused
int main(int argc, char* argv[])
{
int n, m, t;
float l[10][10], c[10][10], a[10], b[10];
float l1[10], max;
cout<<"Vvedite kolichestvo stankov: ";
cin>>n;
cout<<"Vvedite kolichestvo tipov vipuskaemoy tkani: ";
cin>>m;
cout<<"\n";
for (int i=1; i<=n; i++)
  {
  cout<<"Vvedite koeffitsient proizvoditelnosti "<<i<<"-go stanka: ";
  cin>>l1[i];
  }
cout<<"\n";
clrscr();
for (int j=1; j<=m; j++)
  {
  cout<<"Vvedite proizvoditelnost 1-go stanka\
      \npo "<<j<<"-mu vidu tkani: ";
  cin>>l[1][j];
  }
clrscr();
cout<<"\n";
for (int i=2; i<=n; i++)
  {
  cout<<"\n";
  for (int j=1; j<=m; j++)
    {
    l[i][j]=l[1][j]/(l1[1]/l1[i]);
    cout<<"Proizvoditelnost "<<i<<"-go stanka\
         \npo "<<j<<"-mu vidu tkani (m/ch): "<<l[i][j]<<endl;
    }
  }
getch();
clrscr();
cout<<"\n";
for (int i=1; i<=n; i++)
  {
  cout<<"\n";
  for (int j=1; j<=m; j++)
    {
    cout<<"Vvedite sebestoimost "<<j<<"-go vida tkani\
           \nna "<<i<<"-m stanke (rub/m): ";
    cin>>c[i][j];
  }
    }
getch();
clrscr();
cout<<"\n";
for (int i=1; i<=n; i++)
  {
  cout<<"Vvedite fond rabochego vremeni "<<i<<"-go stanka (ch): ";
  cin>>a[i];
  }
  cout<<"\n";
for (int j=1; j<=m; j++)
  {
  cout<<"Vvedite planiruemiy obyem vipuska "<<j<<"-y tkani (m): ";
  cin>>b[j];
  }
clrscr();
float aL[10];
for (int i=1; i<=n; i++)
  {
  aL[i]=1/(l1[1]/l1[i]);
 // cout<<aL[i]<<" ";
  }
int a1[10];
for (int i=1; i<=n; i++)
  {
  a1[i]=aL[i]*a[i];
 // cout<<a1[i]<<" ";
  }
cout<<"\n";

int b1[10];
for (int j=1; j<=m; j++)
  {
  b1[j]=b[j]/l[1][j];
//  cout<<b1[j]<<" ";
  }
cout<<"\n";

int c1[10][10];
for (int i=1; i<=n; i++)
  for (int j=1; j<=m; j++)
     c1[i][j]=c[i][j]*l[1][j];
clrscr();
/*int x=0, y=0;
for (int i=1; i<=n; i++)
  {
  x=1;
  y++;
  for (int j=1; j<=m; j++)
    {
    gotoxy(x+=5,y);
    cout<<c1[i][j];
    }
  } */

int xs[10][10];
int matr[10][10];
int min=xs[1][1];
int p, q;
for (int i=1; i<=n; i++)
  for (int j=1; j<=m; j++)
    matr[i][j]=0;
int s1=0;
for (int i=1; i<=n; i++)
  s1=s1+a1[i];
int s2=0;
for (int j=1; j<=m; j++)
  s2=s2+b1[j];
if (s1>s2)
  {
  for (int i=1; i<=n; i++)
    for (int j=1; j<=m; j++)
      xs[i][j]=c1[i][j];
  int j=m+1;
  for (int i=1; i<=n; i++)
    xs[i][j]=0;
  b1[m+1]=s1-s2;
  // ----------------
while (min!=10000)
  {
  min=10000;
  for (int i=1; i<=n; i++)
    for (int j=1; j<=m+1; j++)
      if (xs[i][j]<min)
        {
        min=xs[i][j];
        p=i;
        q=j;
        }
  if ((b[q]==0) || (a[p]==0))
    xs[p][q]=10000;
  else
    if (a[p]>b[q])
      {
      matr[p][q]=b[q];
      a[p]=a[p]-b[q];
      b[q]=0;
      xs[p][q]=10000;
      }
    else
      {
      matr[p][q]=a[p];
      b[q]=b[q]-a[p];
      a[p]=0;
      xs[p][q]=10000;
      }
    }
  // ----------------
  }
else if (s1<s2)
  {
  for (int i=1; i<=n; i++)
    for (int j=1; j<=m; j++)
      xs[i][j]=c1[i][j];
  int i=n+1;
  for (int j=1; j<=m; j++)
    xs[i][j]=0;
  a1[n+1]=s2-s1;
  // ----------------
while (min!=10000)
  {
  min=10000;
  for (int i=1; i<=n+1; i++)
    for (int j=1; j<=m; j++)
      if (xs[i][j]<min)
        {
        min=xs[i][j];
        p=i;
        q=j;
        }
  if ((b[q]==0) || (a[p]==0))
    xs[p][q]=10000;
  else
    if (a[p]>b[q])
      {
      matr[p][q]=b[q];
      a[p]=a[p]-b[q];
      b[q]=0;
      xs[p][q]=10000;
      }
    else
      {
      matr[p][q]=a[p];
      b[q]=b[q]-a[p];
      a[p]=0;
      xs[p][q]=10000;
      }
    }
  // ----------------
  }
else
  for (int i=1; i<=n; i++)
    for (int j=1; j<=m; j++)
      xs[i][j]=c1[i][j];
// ----------------

while (min!=10000)
  {
  min=10000;
  for (int i=1; i<=n; i++)
    for (int j=1; j<=m; j++)
      if (xs[i][j]<min)
        {
        min=xs[i][j];
        p=i;
        q=j;
        }
  if ((b[q]==0) || (a[p]==0))
    xs[p][q]=10000;
  else
    if (a[p]>b[q])
      {
      matr[p][q]=b[q];
      a[p]=a[p]-b[q];
      b[q]=0;
      xs[p][q]=10000;
      }
    else
      {
      matr[p][q]=a[p];
      b[q]=b[q]-a[p];
      a[p]=0;
      xs[p][q]=10000;
      }
   }
// ----------------


/*int x=0, y=0;
for (int i=1; i<=n; i++)
  {
  x=1;
  y++;
  for (int j=1; j<=m+1; j++)
    {
    gotoxy(x+=5,y);
    cout<<xs[i][j];
    }
  }
cout<<endl;
for (int j=1; j<=m+1; j++)
  cout<<" "<<b1[j];  */
cout<<"Reshenie: skolko metrov dolzhen proizvodit kakoy tkani kazhdiy stanok\
      \n(stroki - stanki, stolbtsi - vidi tkaney)";
int x=3, y=3;
for (int i=1; i<=n; i++)
  {
  x=1;
  y++;
  for (int j=1; j<=m; j++)
    {
    gotoxy(x+=5,y);
    cout<<matr[i][j];
    }
  }
getch();
return 0;
}
//---------------------------------------------------------------------------
Соседние файлы в папке программа