Practical - 2: WCP To Implement NWCM

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Practical -2: WCP to implement NWCM

#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,x[10][10],a[10],b[10],n,m,sum=0,sum1=0,sum2=0,r=0;
clrscr();
printf("Enter the no of destination(factories)");
scanf("%d",&n);
printf("Enter the no of source(workshops)");
scanf("%d",&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Enter the value of x[%d][%d]",i,j);
scanf("%d",&x[i][j]);
}
printf("\n");
}

//Supply/Capacity
for(i=0;i<n;i++)
{
printf("Enter the value of a[%d]",i);
scanf("%d",&a[i]);
sum1=sum1+a[i];
}

//Demand
for(i=0;i<m;i++)
{
printf("Enter the value of b[%d]",i);
scanf("%d",&b[i]);
sum2=sum2+a[i];
}
if(sum1!=sum2)
printf("Transportation table is unbalanced\n");
else
printf("Transportation table is balanced\n");

i=0,j=0;
while(i<m && j<n)
{
if(a[i]<b[j])
{
sum=sum+a[i]*x[i][j];
b[j]=b[j]-a[i];
a[i]=0;
i=i+1;
r++;
}
else if(b[j]<a[i])
{
sum=sum+b[j]*x[i][j];
a[i]=a[i]-b[j];

b[j]=0;
j=j+1;
r++;
}
else
{
sum=sum+a[i]*x[i][j];
a[i]=b[j]=0;
i=i+1;
j=j+1;
r++;
}
}

if(r<(n+m-1))
printf("ans is degenerating\n");
else
{
printf("ans is generating\n");
printf("sum is %d",sum);
}
getch();
}

#include<conio.h>
#include<stdio.h>
void main()
{ int
c[20][20],i,j,min,m,n,b,d,c2,c1,p,q,dem[20],sup[20],rf[20],cf[20],sum=0;
clrscr();
printf("\nEnter the row & column:");
scanf("%d%d",&m,&n);
printf("\nEnter the cost:");
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
scanf("%d",&c[i][j]);
}
printf("\nEnter the demand:");
for(i=0;i<n;i++)
scanf("%d",&dem[i]);
printf("\nEnter the supply:");
for(i=0;i<m;i++)
scanf("%d",&sup[i]);
printf("\nMatrix:\n");
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
printf(" %d ",c[i][j]);
printf("%d",sup[i]);
printf("\n");
}
for(j=0;j<n;j++)
printf("%d ",dem[j]);
for(i=0;i<m;i++)
rf[i]=0;
for(i=0;i<n;i++)
cf[i]=0;
b=m;d=n;
while(b>0&&d>0)
{ min=1000;
for(i=0;i<m;i++)
{ if(rf[i]!=1)
{ for(j=0;j<n;j++)
{ if(cf[j]!=1)
{ if(min>c[i][j])
{ min=c[i][j];
p=i;
q=j;
}
}
}
}
}
if(sup[p]<dem[q])
c1=sup[p];
else
c1=dem[q];
for(i=0;i<m;i++)
{ if(rf[i]!=1)
{ for(j=0;j<n;j++)
{ if(cf[j]!=1)
{ if(min==c[i][j])

{ if(sup[i]<dem[j])
c2=sup[i];
else
c2=dem[j];
if(c2>c1)
{ c1=c2;
p=i;
q=j;
}
}
}
}
}
}
printf("\n %d %d %d ",min,p,q);
if(sup[p]<dem[q])
{ sum=sum+c[p][q]*sup[p];
dem[q]-=sup[p];
rf[p]=1;
b--;
}
else
if(sup[p]>dem[q])
{ sum=sum+c[p][q]*dem[q];
sup[p]-=dem[q];
cf[q]=1;
d--;
}
else
if(sup[p]==dem[q])
{ sum=sum+c[p][q]*sup[p];
rf[p]=1;
cf[q]=1;
b--;
d--;
}
printf("\n %d",sum);
}
printf("\n\n
getch();
}

%d",sum);

You might also like