RSS    

   Ðåôåðàò: Òðàíñïîðòíàÿ çàäà÷à

                                     break;

                                    }

                                }

                               }

                           }

  // **********  Ïðîäîëæåíèå ôóíêöèè ïîäñ÷åòà ïîòåíöèàëîâ *****************

      for(;;){

               fl = 0;

               for(top = topnast;top!=NULL;top =top -> next)

                   {

                   if((top -> zn) == -1)

                     {

                     if(*(pu+(top ->u)) !=MIN)

                          {

                          *(pv+(top->v))=(top->b) - *(pu+(top ->u));

                          fl = 1;

                          top -> zn = 0;

                          }

                     if(*(pv+(top->v)) !=MIN)

                          {

                          *(pu+(top->u))=(top->b) - *(pv+(top->v));

                          fl=1;

                          top->zn = 0;

                          }

                     }

                  }

                  if(!fl) break;

                  }

                  printf("\n ÏÎÒÅÍÖÈÀËÛ ÏÎ v:");

                  fprintf(fil,"\n **** ÏÎÒÅÍÖÈÀËÛ ÏÎ v:");

                  for(i = 0;i<n;i++)

                  {

                  printf("%d",*(pv+i));

                  fprintf(fil,"%5d",*(pv+i));

                  }

                  getch();

                  printf("\n ÏÎÒÅÍÖÈÀËÛ ÏÎ u: ");

                  fprintf(fil,"\n **** ÏÎÒÅÍÖÈÀËÛ ÏÎ u: ");

                  for(i=0;i<m;i++)

                     {

                     printf("%d",*(pu+i));

                     fprintf(fil,"%5d",*(pu+i));

                     }

                     fprintf(fil,"\n");

                     for(top = topnast;top!=NULL;top = top->next)

                          free(top);

                          return;

                          } // potenzial

      // ****** PROVERKA PLANA NA OPTIMALNOST' ************************

                         void abcikl(int ik,int jk);

                         int cikl(int ik,int jk);

                         void pr(char pr[],void *st);  // Ïðåäâàðèòåëüíî

                         int prpoisk(int i1,int j1);   // Îáúÿâëåíû

                         int levpoisk(int i1,int j1);  //ÝÒÈ

                         int verpoisk(int i1,int j1);  //Ôóíêöèè

                         int nizpoisk(int i1,int j1);

  int optim(void)

            {

            int i,j;

            for(i=0;i<m;i++)

               {

               for(j=0;j<n;j++)

                   {

      // ÈÙÅÌ ÎÏÒÈÌÀËÜÍÎÅ ÐÅØÅÍÈÅ Â ÍÀØÅÉ ÌÀÒÐÈÖÅ È ÅÑËÈ ÅÃÎ ÍÅ ÍÀÉÄÅÌ

      // ÒÎ ÏÎ ÑËÅÄÓÞÙÅÌÓ ÓÑËÎÂÈÞ ÏÐÈÑÂÎÈÌ ÃÐÀÔÎÊËÅÒÊÅ Ñ ÊÎÎÐÄÈÍÀÒÀÌÈ

      // ik,jk ÇÍÀ×ÅÍÈÅ -1

                   if(( *(pu+i)+ *(pv+j))>(*(st+i*n+j))&&((*(matr+i*n+j)) == 0))

                         {

                         abcikl(i,j);

                         fprintf(fil,"optim(): Ïëàí íå îïòèìàëåí, ôóíêöèè main() âîçâðàùàåì -1,\n à abcikl() ïàðàìåòðû i,j ");

                         return(-1);

                         }

                   }

               }

             fprintf(fil,"Plan optimalen");

             return(0);

        } // ******* optim() ***************

  // ************** UPGRADE PLAN **************************

   void abcikl(int ik,int jk)

        {

        int i,j;

        fprintf(fil,"Ìû â abcikl()");

        if((matr2=(int*)calloc(n*m,sizeof(int))) == NULL)    abort();

        for(i=0;i<m;i++)

            {

            for(j=0;j<n;j++)

              {

              *(matr2+i*n+j) = *(matr+i*n+j); // Ñîçäàåì êîïèþ ðàáî÷åé ìàòðèöû

              }

            }

            *(matr2+ik*n+jk) = -1;

 // çíà÷åíèþ ìàòðèöû ñ ïàðàìåòðàìè ik,jk ïðèñâàåâàåì -1

            printf("\n");

            printf("Ïîèñê Öåïè: \n\n");

            fprintf(fil,"Ïîèñê Öåïè: \n\n");

            for(i=0;i<m;i++)

               {

               for(j=0;j<n;j++)

                    {

                    fprintf(fil,"%5d",*(matr2+i*n+j));

                    printf("%5d",*(matr2+i*n+j));

                    }

                    fprintf(fil,"\n");

                    printf("\n");

               }

                   fprintf(fil,"\n\n Ïåðåõîäèì â Ñðàíóþ, Ìàòü å¸, Ôóíêöèþ cikl(ik,jk) \n");

               getch();

               cikl(ik,jk);

               return;

               } //  abcikl

// ********* FUNKCION POISKA CIKLA **************************

      int cikl(int ik,int jk)

            {

            int nst,nstr,i,j,

                  perlev = 0,

                  perpr = 0;

            int perver = 0,

                  perniz = 0,

                  fl = 0,

                  fl3 = 1;

            int napr;

            struct cik { int prnapr;

                               int ick;

                               int jck;

                               struct cik *next;

                           } *topnast1 = NULL,

                               *top2 = NULL,

                               *top3 = NULL;

                         ch = 0;

                  if((top2 = (struct cik*)malloc(sizeof(struct cik))) == NULL)

                     abort();

                  if(!topnast1)

                     {

                     topnast1=top2;

                     top3=top2;

                     top3->ick=ik;

                     top3->jck=jk;

                     }

                  else

                    top3->next=top2;

                    top3=top2;

                    top2->next=NULL;

                    top2->ick = ik;

                    top2->jck = jk;

                    ch++;

                    fprintf(fil,"\n\nÄî Óñëîâèÿ while fl3 =%d \n",fl3);

                    pr("top2",top2);

                    fprintf(fil,"Âåñü öèêë ïîèñêà ñåé÷àñ íà÷íåòñÿ, íàäåþñü - \n ÷òî îí áóäåò íå áåñêîíå÷íûé èëè íå áåñïîëåçíûé :( \n");

                    printf("Âåñü öèêë ïîèñêà ñåé÷àñ íà÷íåòñÿ, íàäåþñü - \n ÷òî îí áóäåò íå áåñêîíå÷íûé èëè íå áåñïîëåçíûé :( \n");

                    printf("\n \t \t\tpress anykey to contunio\n");

                    getch();

                    while(fl3)

                        {

                        fl3=0;

                        fl = 0;

                        if((nst = prpoisk(ik,jk))>=0)

                           {

                           fprintf(fil,"\n\nÂíèìàíèå!!!\n nst = %d \n",nst);

                           fprintf(fil,"Ùà áóäåò ïîèê èäòè åìó áû...:Point found!\n");

                           printf("È îí ïîøåë RIGHT:Point found !\n\r");

                           napr = 2;

                           jk = nst;

                           top2->prnapr = 1;

                           }

                     else if((nstr = nizpoisk(ik,jk))>=0)

                           {

                           fprintf(fil,"DOWN: Point found !\n");

                           printf("DOWN: Point found !\n\r");

                           napr = 3;

                           ik = nstr;

                           top2->prnapr = 2;

                           }

                           else if((nst=levpoisk(ik,jk))>=0)

                                {

                                fprintf(fil,"LEFT:Point found !\n");

                                printf("LEFT:Point found !\n\r");

                                napr = 4;

                                jk = nst;

                                top2->prnapr = 3;

                                }

      // **************** Prodolzhenie 1 poiska ***********************

             else if((nstr = verpoisk(ik,jk))>=0)

                  {

                  fprintf(fil,"UP:Point found !\n");

                  printf("UP:Point found !\n\r");

                  napr = 1;

                  ik = nstr;

                  top2->prnapr = 4;

                  }

                  else

                    return(-1);

             while(!fl || *(matr2+ik*n+jk)!=-1)

                   {

                   fl=1;

                   switch(napr)

                          {

                          case 1:

                               printf("Search to the right --->");

                               fprintf(fil,"Search to the right --->");

                               if((nst = prpoisk(ik,jk))>=0)

Ñòðàíèöû: 1, 2, 3, 4, 5


Íîâîñòè


Áûñòðûé ïîèñê

Ãðóïïà âÊîíòàêòå: íîâîñòè

Ïîêà íåò

Íîâîñòè â Twitter è Facebook

                   

Íîâîñòè

© 2010.