Перевод с с++ (Алгоритм Дейкстра) - C#

Узнай цену своей работы

Формулировка задачи:

Благодарю
Листинг программы
  1. #include<iostream>
  2. #include<string.h>
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<conio.h>
  6. #define word unsigned int
  7. using namespace std;
  8. int i, j, n, p, xn, xk;
  9. int flag[11];
  10. word c[11][11], l[11];
  11. char s[80], path[80][11];
  12. int min(int n)
  13. {
  14. int i, result;
  15. for (i = 0; i<n; i++)
  16. if (!(flag[i])) result = i;
  17. for (i = 0; i<n; i++)
  18. if ((l[result]>l[i]) && (!flag[i])) result = i;
  19. return result;
  20. }
  21. word minim(word x, word y)
  22. {
  23. if (x<y) return x;
  24. return y;
  25. }
  26. void main()
  27. {
  28. cout << "Counte dots: ";
  29. cin >> n;
  30. for (i = 0; i<n; i++)
  31. for (j = 0; j<n; j++) c[i][j] = 0;
  32. for (i = 0; i<n; i++)
  33. for (j = i + 1; j<n; j++)
  34. {
  35. cout << " Weight of edge x" << i + 1 << " do x" << j + 1 << ": ";
  36. cin >> c[i][j];
  37. }
  38. cout << " ";
  39. for (i = 0; i<n; i++) cout << " X" << i + 1;
  40. cout << endl << endl;
  41. for (i = 0; i<n; i++)
  42. {
  43. printf("X%d", i + 1);
  44. for (j = 0; j<n; j++)
  45. {
  46. printf("%6d", c[i][j]);
  47. c[j][i] = c[i][j];
  48. }
  49. printf("\n\n");
  50. }
  51. for (i = 0; i<n; i++)
  52. for (j = 0; j<n; j++)
  53. if (c[i][j] == 0) c[i][j] = 65535; //nekonecno
  54. cout << " start: ";
  55. cin >> xn;
  56. cout << " finish: ";
  57. cin >> xk;
  58. xk--;
  59. xn--;
  60. if (xn == xk)
  61. {
  62. cout << "error, start and end dots cannot be simple." << endl;
  63. getch();
  64. return;
  65. }
  66. for (i = 0; i<n; i++)
  67. {
  68. flag[i] = 0;
  69. l[i] = 65535;
  70. }
  71. l[xn] = 0;
  72. flag[xn] = 1;
  73. p = xn;
  74. itoa(xn + 1, s, 10);
  75. for (i = 1; i <= n; i++)
  76. {
  77. strcpy(path[i], "X");
  78. strcat(path[i], s);
  79. }
  80. do
  81. {
  82. for (i = 0; i<n; i++)
  83. if ((c[p][i] != 65535) && (!flag[i]) && (i != p))
  84. {
  85. if (l[i]>l[p] + c[p][i])
  86. {
  87. itoa(i + 1, s, 10);
  88. strcpy(path[i + 1], path[p + 1]);
  89. strcat(path[i + 1], "-X");
  90. strcat(path[i + 1], s);
  91. }
  92. l[i] = minim(l[i], l[p] + c[p][i]);
  93. }
  94. p = min(n);
  95. flag[p] = 1;
  96. } while (p != xk);
  97. if (l[p] != 65535)
  98. {
  99. cout << "Put: " << path[p + 1] << endl;
  100. cout << "Dlina puti: " << l[p] << endl;
  101. }
  102. else
  103. cout << "Путь не существует!" << endl;
  104. getch();
  105. }

Решение задачи: «Перевод с с++ (Алгоритм Дейкстра)»

textual
Листинг программы
  1. if(flag[i] == 0) ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы