Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диссертация_2013_Даулбаева ММ.doc
Скачиваний:
67
Добавлен:
10.03.2016
Размер:
2.34 Mб
Скачать

Продолжение приложения а

  1. //*************** Proverka *************************

  2. printf("Proverka\n");

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

  4. {

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

  6. {

  7. printf("%5d",*(matr+i*n+j));

  8. }

  9. printf("\n");

  10. }

  11. fprintf(fil,"matrix\n");

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

  13. {

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

  15. {

  16. fprintf(fil,"%5d",*(matr+i*n+j));

  17. }

  18. fprintf(fil,"\n");

  19. }

  20. fprintf(fil,"*****************\n");

  21. return;

  22. }

  23. //******** opplan1

  24. //************** SOZDANIE OPORNOGO PLANA ********************

  25. //*************** METHOD NORD-WEST YGOL *********************

  26. void opplan2(void)

  27. {

  28. int i,j,k_i,k_j=0, min = 32767, *kontr,fl;

  29. if((matr=(int*)calloc(m*n,sizeof(int))) == NULL) abort();

  30. if((kontr=(int*)calloc(m*n,sizeof(int))) == NULL) abort();

  31. for(i=0;i<m;i++){

  32. for(j=0;j<n;j++){

  33. *(kontr+i*n+j) = 0;

  34. }

  35. }

  36. for(i=0;i<m;i++){

  37. fl = 0;

  38. while(!fl){

  39. for(j=0;j<n;j++){

  40. if(*(st+i*n+j)<min){

  41. if(*(kontr+i*n+j) == 0) {

  42. min = *(st+i*n+j);

  43. k_i = i; k_j = j;

  44. }

  45. }

  46. }

  47. *(kontr+k_i*n+k_j) = 1;

  48. if(*(po+k_i)<*(pn+k_j)) {

  49. min = 32767;

  50. *(matr+k_i*n+k_j)=*(po+k_i);

Продолжение приложения а

  1. *(pn+k_j)=*(po+k_i);

  2. *(po+k_i)=0;

  3. break;

  4. }

  5. else {

  6. *(matr+k_i*n+k_j)=*(pn+k_j);

  7. *(po+k_i)-=*(pn+k_j);

  8. *(pn+k_j)=0;

  9. min = 32767;

  10. if(*(po+k_i) == 0) fl = 1;

  11. }

  12. }

  13. }

  14. printf("Proverka\n"); // proverka

  15. for(i=0;i<m;i++){

  16. for(j=0;j<n;j++){

  17. printf("%5d",*(matr+i*n+j));

  18. }

  19. printf("\n");

  20. }

  21. fprintf(fil," matr\n");

  22. for(i=0;i<m;i++){

  23. for(j=0;j<n;j++){

  24. fprintf(fil,"%5d",*(matr+i*n+j));

  25. }

  26. fprintf(fil,"\n");

  27. }

  28. fprintf(fil,"*********************************\n");

  29. return;

  30. }

  31. // opplan2

  32. void main()

  33. {

  34. int i,j,met;

  35. int flagok;

  36. fil = fopen("otchet.txt","w");

  37. clrscr();

  38. gotoxy(1,3);

  39. printf("WARNING USERS ---->\n\n\n");

  40. printf("Решение закрытой трансп.задачи\n\n");

  41. printf("Базисные переменные,равные нулю, помечаются -2;\n");

  42. printf("Графоклетка, относительно которой строится цепь\n");

  43. printf("помечается -1\n");

  44. gotoxy(1,22);

  45. printf("press anykey to contunio...\n");

  46. getch();

  47. clrscr();

  48. data();

  49. printf("press anykey to contunio...\n");

  50. getch();

Продолжение приложения а

  1. clrscr();

  2. gotoxy(1,3);

  3. printf("\n YOU selest method building first plan:\n");

  4. printf("1-method NORD-WEST ygol\n");

  5. printf("2-method NORD-EST ygol\n");

  6. printf("3-method minimum element to string\n");

  7. scanf("%d",&met);

  8. gotoxy(1,22);

  9. printf("press anykey, to contunie...\n");

  10. getch();

  11. //void opplan(void);

  12. //void opplan1(void);

  13. //void opplan2(void);

  14. clrscr();

  15. switch(met)

  16. {

  17. case 1: opplan();

  18. break;

  19. case 2: opplan1();

  20. break;

  21. case 3: opplan2();

  22. break;

  23. default: printf("неверно выбран МЕТОД\n"); exit(-1);

  24. }

  25. basper = 0;

  26. Bas();

  27. flagok = 0;

  28. if(basper<m+n-1)

  29. {

  30. //Если в первоначальном плане количество базисных

  31. //переменных, отличных от нуля, меньше, чем M+N-1

  32. while(!flagok)

  33. {

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

  35. {

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

  37. {

  38. if(*(matr+i*n+j)==0)

  39. {

  40. *(matr+i*n+j) = -2;

  41. flagok = 1;

  42. basper++;

  43. break;

  44. } //if

  45. }

  46. if(flagok) break;

  47. }

  48. if(basper<m+n-1) flagok = 0;

  49. }//while

  50. }//if