Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.75 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5.  
  6. #pragma hdrstop
  7. using std::cout;
  8. using std::cin;
  9. using std::endl;
  10. #define N 7
  11.  
  12. //---------------------------------------------------------------------------
  13. void view(int L[N][N]);
  14. void viewstr(char S[N][N]);
  15. void kw(int L_1[N][N], int L_2[N][N],int L_N[N][N]);
  16. void rwn(int L_1[N][N], int L_2[N][N]);
  17. void press();
  18. //---------------------------------------------------------------------------
  19.  
  20.  
  21.  
  22.  
  23. #pragma argsused
  24. int main(int argc, char* argv[])
  25. {
  26. char s[] = "ABCDEFG";
  27.  
  28.  
  29. int L1[N][N] = {
  30. 0, 15, 999, 15, 999, 999, 35,
  31. 15, 0, 30, 20, 999, 999, 999,
  32. 999, 30, 0, 20, 35, 999, 999,
  33. 15, 999, 20, 0, 40, 10, 50,
  34. 999, 999, 35, 40, 0, 20, 999,
  35. 999, 999, 999, 999, 20, 0, 10,
  36. 35, 999, 999, 50, 999, 10, 0
  37. };
  38.  
  39.  
  40.  
  41. cout << endl << "Mat L1 - rasstoyaniy neposredstvennix svyazey" << endl << endl;
  42. view(L1); //press();
  43.  
  44. int L2[N][N];
  45. for (int i = 0; i <= N-1; i++)
  46. for (int j = 0; j <= N-1; j++)
  47. L2[i][j] = 999;
  48.  
  49. kw(L1, L2, L1);
  50.  
  51. cout << endl << "Matrica L2" << endl << endl;
  52. view(L2); rwn(L1, L2); //press();
  53.  
  54. int L3[N][N];
  55. for (int i = 0; i <= N-1; i++)
  56. for (int j = 0; j <= N-1; j++)
  57. L3[i][j] = 999;
  58. cout << endl << "Matrica L3" << endl << endl;
  59. kw(L2, L3, L1);
  60.  
  61. view(L3); rwn(L2, L3); //press();
  62.  
  63. int L4[N][N];
  64. for (int i = 0; i <= N-1; i++)
  65. for (int j = 0; j <= N-1; j++)
  66. L4[i][j] = 999;
  67. cout << endl << "Matrica L4" << endl << endl;
  68. kw(L3, L4, L1);
  69. view(L4); rwn(L3, L4); //press();
  70.  
  71.  
  72. int L5[N][N];
  73. for (int i = 0; i <= N - 1; i++)
  74. for (int j = 0; j <= N - 1; j++)
  75. L5[i][j] = 999;
  76. cout << endl << "Matrica L5" << endl << endl;
  77. kw(L4, L5, L1);
  78. view(L5); rwn(L4, L5); //press();
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. int G[N][N];
  91. for (int i = 0; i <= N-1; i++)
  92. for (int j = 0; j <= N-1; j++)
  93. if (L1[i][j] == 0) G[i][j] = 999;
  94. else G[i][j] = L1[i][j];
  95. cout << endl << "Matrica G - dlin neposredstvennix svyazey" << endl << endl; //матрица длин непосредственных связей
  96. view(G); //press();
  97.  
  98.  
  99. int DELTA[N][N]; //матрица кратчайших путей
  100. char dis[N][N];
  101. for (int i = 0; i <= N-1; i++)
  102. for (int j = 0; j <= N-1; j++)
  103. DELTA[i][j] = 999;
  104. for (int i = 0; i <= N-1; i++)
  105. for (int j = 0; j <= N-1; j++)
  106. for (int k = 0; k <= N-1; k++)
  107. {
  108. if (DELTA[i][j]>(G[i][k] + L4[k][j]))
  109. {
  110. DELTA[i][j] = (G[i][k] + L4[k][j]);
  111. dis[i][j] = s[k];
  112. };
  113. if (DELTA[i][j]>999)
  114. DELTA[i][j] = 999;
  115.  
  116. }
  117. cout << endl << "Matrica DELTA - kratchayshih putey" << endl << endl;
  118. view(DELTA); //press();
  119. cout << endl << "Dispersionnaya matrica" << endl << endl;
  120. viewstr(dis);
  121.  
  122.  
  123. cout << "\n" << endl << "Press any key to exit...";
  124. getch();
  125. return 0;
  126. }
  127.  
  128.  
  129.  
  130. //---------------------------------------------------------------------------
  131. void view(int L[N][N])
  132. {
  133. char str[] = "ABCDEFG";
  134.  
  135. cout << " | A B C D E F G \n-------------------------------\n";
  136.  
  137. for (int i = 0; i <= N-1; i++)
  138.  
  139. {
  140. cout << " " << str[i] << " |";
  141.  
  142. for (int j = 0; j <= N-1; j++)
  143. if (L[i][j] == 0) cout << " " << L[i][j] << " ";
  144. else if (L[i][j]<100) cout << " " << L[i][j] << " "; else cout << L[i][j] << " ";
  145. cout << endl;
  146. }
  147. };
  148.  
  149. //---------------------------------------------------------------------------
  150. void kw(int L_1[N][N], int L_2[N][N], int L_N[N][N])
  151. {
  152. for (int i = 0; i <= N - 1; i++) {
  153. for (int j = 0; j <= N-1; j++) {
  154. for (int k = 0; k <= N - 1; k++) {
  155. if (L_2[i][j] > L_N[i][k] + L_1[k][j]) {
  156.  
  157. L_2[i][j] = L_N[i][k] + L_1[k][j];
  158. }
  159. }
  160. if (L_2[i][j] > 999) {
  161. L_2[i][j] = 999;
  162. }
  163. }
  164. }
  165. };
  166.  
  167. void rwn(int L_1[N][N], int L_2[N][N])
  168. {
  169. int sum = 0;
  170. int max = N*N;
  171. for (int i = 0; i <= N - 1; i++)
  172. for (int j = 0; j <= N - 1; j++) {
  173. if (L_1[i][j] == L_2[i][j])
  174. sum++;
  175. }
  176.  
  177. if (sum == max) {
  178. cout << " RAVNO" << endl;
  179. cout << endl << "Matrica D - distancionnay matrica" << endl << endl; // дистанционная матрица
  180. view(L_2); //press();
  181.  
  182. }
  183. else
  184. cout << " NOT RAVNO" << endl;
  185.  
  186. };
  187. //---------------------------------------------------------------------------
  188. void press()
  189. {
  190. cout << endl << "Press any key to continue..." << endl;
  191. getch();
  192. };
  193.  
  194. //---------------------------------------------------------------------------
  195. void viewstr(char S[N][N])
  196. {
  197. char str[] = "ABCDEFG";
  198.  
  199. cout << endl << " |A B C D E F G \n-----------------\n";
  200. for (int i = 0; i <= N-1; i++)
  201.  
  202. {
  203. cout << " " << str[i] << "|";
  204.  
  205. for (int j = 0; j <= N-1; j++)
  206. cout << S[i][j] << " ";
  207. cout << endl;
  208. };
  209. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement