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

Приложение а

  1. // void exit(int status);

  2. void data (void)

  3. {

  4. int i,j,t;

  5. printf("Введите количество складов: ");

  6. scanf("%d",&m);

  7. printf("Kolichestvo skladov-----> %d",m);

  8. printf("\n Введите количество магазинов:\n");

  9. scanf("%d",&n);

  10. printf("\n Kolichestvo magazinov --->%d",n);

  11. //*********** Выделение памяти ******************

  12. if((po=(int*)calloc(m,sizeof(int)))==NULL) abort();

  13. if((pn=(int*)calloc(n,sizeof(int)))==NULL) abort();

  14. if((st=(int*)calloc(n*m,sizeof(int)))==NULL) abort();

  15. printf("Введите элементы матрицы стоимостей: \n");

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

  17. {

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

  19. {

  20. printf("Введите [%d][%d]\n ",i,j);

  21. scanf("%d",&t);

  22. *(st+i*n+j)=t;

  23. }

  24. }

  25. printf("\n");

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

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

  28. {

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

  30. {

  31. printf("%5d",*(st+i*n+j));

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

  33. }

  34. printf("\n");

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

  36. }

  37. printf("Введите количество запасов на каждом складе:\n");

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

  39. {

  40. printf("\n");

  41. scanf("%d",po+i);

  42. printf("%5d",*(po+i));

  43. }

  44. printf("\n");

  45. printf("Введите потребности:\n");

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

  47. {

  48. printf("\n");

  49. scanf("%d",pn+j);

  50. printf("%5d",*(pn+j));

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

  1. }

  2. return;

  3. }//**** data

  4. //************* SOZDANIE OPORNOGO PLANA ********************

  5. //************* METHOD NORD-WEST YGLA **********************

  6. void opplan(void)

  7. {

  8. int i,j,ch1 = 0;

  9. //*************** ВЫДЕЛЕНИЕ ПАМЯТИ *************************

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

  11. // ЦИКЛ ПРОСТОГО РАСПРЕДЕЛЕНИЯ ПОТРЕБНОСТЕЙ по ячейкам рабочей матрицы

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

  13. {

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

  15. {

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

  17. {

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

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

  20. *(po+i)=0;

  21. break;

  22. }

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

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

  25. *(pn+j)=0;

  26. ch1++;

  27. }

  28. }

  29. //********* ПРОВЕРКА И ВЫВОД получившейся матрицы **********************

  30. printf("PROVERKA\n");

  31. fprintf(fil,"PROVERKA MATRIX-Северо заподный УГОЛ, \ n просмотр получившегося распределения в матрице \ n");

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

  33. {

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

  35. {

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

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

  38. }

  39. printf("\n");

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

  41. }

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

  43. return;

  44. } // opplan

  45. void kost(void)

  46. {

  47. int i,j, *matr1,rez=0;

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

  1. //выделение памяти

  2. if((matr1=(int*)calloc(n*m,sizeof(int))) == NULL) abort();

  3. //присвоение новой матрице значения базисной(старой) матрицы

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

  5. {

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

  7. {

  8. *(matr1+i*n+j) = *(matr+i*n+j);

  9. }

  10. }

  11. // Подсчет стоимости базисной матрицы (созданного массива)

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

  13. {

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

  15. {

  16. if(*(matr1+i*n+j)>0)

  17. rez += (*(matr1+i*n+j)) *(*(st+i*n+j));

  18. }

  19. }

  20. printf("\n Rezultat : %d",rez);

  21. printf("\n");

  22. fprintf(fil,"%s %5d"," Rezultat : ",rez);

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

  24. getch();

  25. free(matr1);

  26. if(zen == rez)

  27. {

  28. z=0;

  29. }

  30. zen = rez;

  31. return;

  32. }

  33. //************* KOST()

  1. //************* PODSCHET POTENCIALOV ********************

  2. void potenzial(void)

  3. {

  4. struct poten

  5. {

  6. int v;

  7. int u;

  8. int zn;

  9. struct poten *next;

  10. int b;

  11. } *topnast = NULL,

  12. *top = NULL,

  13. *top1 = NULL;

  14. int i,j;

  15. int fl;

  16. //********** ВЫДЕЛЕНИЕ ПАМЯТИ *******************8