Ðåôåðàò: Òðàíñïîðòíàÿ çàäà÷à
void data(void)
{
int i,j,t;
printf("Ââåäèòå êîëè÷åñòâî ñêëàäîâ: ");
scanf("%d",&m);
printf("Kolichestvo skladov-----> %d",m);
printf("\n Ââåäèòå êîëè÷åñòâî ìàãàçèíîâ:\n");
scanf("%d",&n);
printf("\n Kolichestvo magazinov --->%d",n);
//*********** Âûäåëåíèå ïàìÿòè ******************
if((po=(int*)calloc(m,sizeof(int)))==NULL) abort();
if((pn=(int*)calloc(n,sizeof(int)))==NULL) abort();
if((st=(int*)calloc(n*m,sizeof(int)))==NULL) abort();
printf("Ââåäèòå ýëåìåíòû ìàòðèöû ñòîèìîñòåé: \n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("Ââåäèòå [%d][%d]\n ",i,j);
scanf("%d",&t);
*(st+i*n+j)=t;
}
}
printf("\n");
fprintf(fil,"\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",*(st+i*n+j));
fprintf(fil,"%5d",*(st+i*n+j));
}
printf("\n");
fprintf(fil,"\n");
}
printf("Ââåäèòå êîëè÷åñòâî çàïàñîâ íà êàæäîì ñêëàäå:\n");
for(i=0;i<m;i++)
{
printf("\n");
scanf("%d",po+i);
printf("%5d",*(po+i));
}
printf("\n");
printf("Ââåäèòå ïîòðåáíîñòè:\n");
for(j=0;j<n;j++)
{
printf("\n");
scanf("%d",pn+j);
printf("%5d",*(pn+j));
}
return;
}//**** data
//************* SOZDANIE OPORNOGO PLANA ********************
//************* METHOD NORD-WEST YGLA **********************
void opplan(void)
{
int i,j,ch1 = 0;
//*************** ÂÛÄÅËÅÍÈÅ ÏÀÌßÒÈ *************************
if((matr=(int*)calloc(m*n,sizeof(int))) == NULL) abort();
// ÖÈÊË ÏÐÎÑÒÎÃÎ ÐÀÑÏÐÅÄÅËÅÍÈß ÏÎÒÐÅÁÍÎÑÒÅÉ ïî ÿ÷åéêàì ðàáî÷åé ìàòðèöû
for(i=0;i<m;i++)
{
for(j=ch1;j<n;j++)
{
if(*(po+i)<*(pn+j))
{
*(matr+i*n+j)=*(po+i);
*(pn+j)-=*(po+i);
*(po+i)=0;
break;
}
*(matr+i*n+j)=*(pn+j);
*(po+i) -= *(pn+j);
*(pn+j)=0;
ch1++;
}
}
//********* ÏÐÎÂÅÐÊÀ È ÂÛâîä ïîëó÷èâøåéñÿ ìàòðèöû ***********************
printf("PROVERKA\n");
fprintf(fil,"PROVERKA MATRIX - Ñåâåðî çàïîäíûé ÓÃÎË,\n ïðîñìîòð ïîëó÷èâøåãîñÿ ðàñïðåäåëåíèÿ â ìàòðèöå \n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",*(matr+i*n+j));
fprintf(fil,"%d",*(matr+i*n+j));
}
printf("\n");
fprintf(fil,"\n");
}
fprintf(fil,"********************\n");
return;
} // opplan
void kost(void)
{
int i,j, *matr1,rez=0;
//âûäåëåíèå ïàìÿòè
if((matr1=(int*)calloc(n*m,sizeof(int))) == NULL) abort();
//ïðèñâîåíèå íîâîé ìàòðèöå çíà÷åíèÿ áàçèñíîé(ñòàðîé) ìàòðèöû
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
*(matr1+i*n+j) = *(matr+i*n+j);
}
}
// Ïîäñ÷åò ñòîèìîñòè áàçèñíîé ìàòðèöû (ñîçäàííîãî ìàññèâà)
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(*(matr1+i*n+j)>0)
rez += (*(matr1+i*n+j)) *(*(st+i*n+j));
}
}
printf("\n Rezultat : %d",rez);
printf("\n");
fprintf(fil,"%s %5d"," Rezultat : ",rez);
fprintf(fil,"\n");
getch();
free(matr1);
if(zen == rez)
{
z=0;
}
zen = rez;
return;
}
//************* KOST()
//************* PODSCHET POTENCIALOV ********************
void potenzial(void)
{
struct poten
{
int v;
int u;
int zn;
struct poten *next;
int b;
} *topnast = NULL,
*top = NULL,
*top1 = NULL;
int i,j;
int fl;
//********** ÂÛÄÅËÅÍÈÅ ÏÀÌßÒÈ *******************8
if((pu=(int*)calloc(m,sizeof(int)))==NULL) abort();
if((pv=(int*)calloc(n,sizeof(int)))==NULL) abort();
// ÏÐÈÑÂÎÅÍÈÅ ÂÑÅÌ ÏÎÒÅÍÖÈÀËÀÌ ÇÍÀ×ÅÍÈß MIN
for(i=0;i<m;i++)
*(pu+i) = MIN;
for(j=0;j<n;j++)
*(pv+j) = MIN;
// Âûäåëåíèå ïàìÿòè ïîä ñòðóêòóðó è çàïîëíåíèå å¸ çíà÷åíèÿìè
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if((*(matr+i*n+j) > 0) || (*(matr+i*n+j)==-2))
{
if((top=(struct poten*)malloc(sizeof(struct poten)))==NULL)
abort();
fprintf(fil,"top = %d",top);
if(!topnast){
topnast = top;
fprintf(fil,"topnast = top = %d",top);
}
else top1 -> next=top;
top1=top;
top -> next=NULL;
top -> b = *(st+i*n+j); //Ñòîèìîñòè
top -> v = j;
top -> u = i;
top -> zn = -1;
}
}
}
*pu = 0;
i=0; j = -1;
for(top = topnast;top!=NULL;top = top -> next)
{
if((top -> u) == i && (top -> v)!=j)
{
*(pv+(top -> v)) = (top -> b) - *(pu+i);
j = (top->v);
top -> zn = 0;
}
else{
for(top1 = topnast;top1 != NULL;top1 = top1->next)
{
if((top1->v) == j && (top1->u)!=i)
{
*(pu+(top1->u))=(top1->b) - *(pv+j);
i = (top1->u);
top1 ->zn = 0;