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

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

  1. {

  2. int j;

  3. for(j=j1+1;j<n;j++)

  4. {

  5. if((*(matr2+i1*n+j))!=0)

  6. return(j);

  7. }

  8. return(-1);

  9. }

  10. int levpoisk(int i1,int j1)

  11. {

  12. int j;

  13. for(j = j1-1;j>=0;j--)

  14. {

  15. if((*(matr2+i1*n+j))!=0)

  16. return(j);

  17. }

  18. return(-1);

  19. }

  20. int verpoisk(int i1,int j1)

  21. {

  22. int i;

  23. for(i=i1-1;i>=0;i--)

  24. {

  25. if((*(matr2+i*n+j1))!=0)

  26. return(i);

  27. }

  28. return(-1);

  29. }

  30. int nizpoisk(int i1, int j1)

  31. {

  32. int i;

  33. for(i = i1+1;i<m;i++)

  34. {

  35. if((*(matr2+i*n+j1))!=0)

  36. return(i);

  37. }

  38. return(-1);

  39. }

  40. // ************* FUNCTION SEARCH ********************

  41. void pr(char pr[],void *st)

  42. {

  43. struct cik { int prnapr;

  44. int ick;

  45. int jck;

  46. struct cik *next;

  47. } *ptr;

  48. int i,j;

  49. ptr = (struct cik *)st;

  50. fprintf(fil,"Koordinatiy ytoplennoy tochki : %d and %d",ptr->ick,ptr->jck);

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

  1. printf("Koordinatiy ytoplennoy tochki : %d and %d\n\r",ptr->ick,ptr->jck);

  2. fprintf(fil,"and napravlenie");

  3. printf("Napravlenie");

  4. switch(ptr->prnapr)

  5. {

  6. case 1:

  7. fprintf(fil,"Vpravo\n");

  8. printf("Vpravo\n\r");

  9. break;

  10. case 2:

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

  12. printf("Vniz\n\r");

  13. break;

  14. case 3:

  15. fprintf(fil,"Vlevo\n");

  16. printf("Vlevo\n\r");

  17. break;

  18. case 4:

  19. fprintf(fil,"Vverh\n");

  20. printf("Vverh\n\r");

  21. break;

  22. default:

  23. fprintf(fil,"Start\n");

  24. printf("Start\n\r");

  25. break;

  26. }

  27. fprintf(fil,"WORK MATRIX\n");

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

  29. {

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

  31. {

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

  33. }

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

  35. }

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

  37. return;

  38. }

  39. // **************** UPGRADE PLAN *********************************//

  40. void plmi(void)

  41. {

  42. int i,j,k,min,i1,j1,flagok;

  43. ch = ch2;

  44. flagok = 0;

  45. i1=*zi;

  46. j1 = *zj;

  47. for(k=1;k<ch;k+=2){

  48. i=*(zi+k);

  49. j = *(zj+k);

  50. if(*(matr+i*n+j) == -2){

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

  1. *(matr+i1*n+j1) = *(matr+i*n+j);

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

  3. flagok = 1;

  4. break;

  5. }

  6. } // for

  7. if(!flagok){

  8. for(k=2;k<ch;k+=2){

  9. i = *(zi+k);

  10. j = *(zj+k);

  11. if(*(matr+i*n+j) == -2)

  12. *(matr+i*n+j) = 0;

  13. } // for

  14. i = *(zi+1);

  15. j = *(zj+1);

  16. min = *(matr+i*n+j);

  17. for(k=3;k<ch;k+=2){

  18. i=*(zi+k);

  19. j=*(zj+k);

  20. if(*(matr+i*n+j)<min)

  21. min = *(matr+i*n+j);

  22. }

  23. if(min == -2) min = 0;

  24. for(k=0;k<ch;k+=2){

  25. i = *(zi+k);

  26. j = *(zj+k);

  27. *(matr+i*n+j) += min;

  28. }

  29. for(k=1;k<ch;k+=2){

  30. i=*(zi+k);

  31. j=*(zj+k);

  32. *(matr+i*n+j)-=min;

  33. }

  34. }

  35. //if

  36. // ***************** PROVERKA **************************//

  37. printf("PROVERKA\n");

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

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

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

  41. }

  42. printf("\n");

  43. }

  44. free(matr2);free(zi);free(zj);free(pu);free(pv);

  45. return;

  46. }

  47. void Bas(void)

  48. {

  49. int i,j;

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

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

  1. {

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

  3. {

  4. if(*(matr+i*n+j)!=0) basper++;

  5. }

  6. }

  7. return;

  8. }

  9. void sohran(void)

  10. {

  11. // Sravnenie

  12. int i,j,k;

  13. for(k=0;k<ch;k++)

  14. {

  15. i=zi[k];

  16. j=zj[k];

  17. if((*(matr+i*n+j) == 0) && (basper < m+n-1))

  18. {

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

  20. basper++;

  21. }//if

  22. }

  23. return;

  24. }

  25. // ************ SOZDANIE OPORNOGO PLANA **************************

  26. // ************ METODOM SEVERNO-ZAPADNOGO YGLA *******************

  27. void opplan1(void)

  28. {

  29. int i,j, ch1 = n-1;

  30. //**************** Viydelenie pamyty *************************

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

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

  33. {

  34. for(j=ch1;j>=0;j--)

  35. {

  36. if(*(po+i)<*(pn+j))

  37. {

  38. *(matr+i*n+j)=*(po+i);

  39. *(pn+j)-=*(po+i);

  40. *(po+i)=0;

  41. break;

  42. }

  43. *(matr+i*n+j)=*(pn+j);

  44. *(po+i)-=*(pn+j);

  45. *(pn+j)=0;

  46. ch1--;

  47. }

  48. }