Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <fstream>
  4. #include <iomanip>
  5. #include <cassert>
  6.  
  7. using namespace std;
  8.  
  9. int **graph(int&, int&);
  10. int **matrixinc_create(int, int);
  11. int **matrixsum_create(int);
  12. void matrix_sum_input(int **, int **, int);
  13. void matrix_inc_input(int **, int **, int, int);
  14. void check(int **, int **, int, int);
  15. void matrix_inc_output(int **, int, int);
  16. void matrix_sum_output(int **, int);
  17. void delete_matrix(int **, int **, int);
  18.  
  19. int main()
  20. {
  21.  
  22. setlocale(LC_ALL,"ukrainian");
  23. int m, n, **inc, **sum, **Graph;
  24. Graph = graph(m, n);
  25. inc = matrixinc_create(m, n);
  26. sum = matrixsum_create(m);
  27. matrix_sum_input(Graph, sum, m);
  28. matrix_inc_input(Graph, inc, m ,n);
  29. check(sum, inc, m, n);
  30. delete_matrix(inc, sum, m);
  31. _getch();
  32. return 0;
  33. }
  34.  
  35. int **graph(int &m, int &n){
  36.  
  37. ifstream fin;
  38. fin.open("graph");
  39. if (!fin.is_open())
  40. cout << "Файл не може бути вiдкрито!\n";
  41. else{
  42. fin >> m >> n;
  43. int ** graph = new int*[n];
  44. for (int i = 0 ; i<n ; i++)
  45. graph[i] = new int[2];
  46. for (int i = 0; i<n ; i++){
  47. fin >> graph[i][0] >> graph[i][1];
  48. }
  49. printf("Граф:\n");
  50. for (int i = 0; i < n; i++)
  51. printf("%3d %3d\n", graph [i][0], graph[i][1]);
  52. fin.close();
  53. return graph;
  54. }
  55.  
  56. }
  57.  
  58.  
  59. int **matrixsum_create(int m){
  60. int **matrix = new int*[m];
  61. for (int i = 0; i<m; i++){
  62. matrix[i] = new int[m];
  63. for (int j = 0; j<m; j++)
  64. matrix[i][j] = 0;
  65. }
  66. return matrix;
  67. }
  68.  
  69. int **matrixinc_create(int m, int n){
  70. int **matrix = new int*[n];
  71. for (int i = 0; i<m; i++){
  72. matrix[i] = new int[n];
  73. for (int j = 0; j<n; j++)
  74. matrix[i][j] = 0;
  75. }
  76. return matrix;
  77. }
  78.  
  79. void matrix_sum_input(int **graph, int **sum, int m){
  80. int vf, vs;
  81. for (int i = 0; i<=m+2; i++){
  82. vf = graph[i][0];
  83. vs = graph[i][1];
  84. sum[vf-1][vs-1] = 1;
  85. }
  86. }
  87.  
  88. void matrix_inc_input(int **graph, int **inc, int m, int n){
  89. int vf, vs;
  90. for (int i = 0;i<n;i++) {
  91. vf = graph[i][0];
  92. vs = graph[i][1];
  93. if (vf == vs)
  94. inc[vf-1][i] = 2;
  95. else {
  96. inc[vf-1][i]= -1;
  97. inc[vs-1][i]= 1;
  98. }
  99. }
  100. }
  101.  
  102. void check(int **sum, int **inc, int m, int n){
  103. int trigg;
  104. bool temp = true;
  105. while(temp){
  106. cout << "Вивести матрицю сумiжностi(1) чи iнцидентностi(2)? Введiть 1, 2 або 3 (для виходу) :";
  107. cin >> trigg;
  108. switch (trigg) {
  109. case 1 : matrix_sum_output(sum, m); break;
  110. case 2 : matrix_inc_output(inc, m, n); break;
  111. case 3 : return;
  112. default: temp = false;
  113. }
  114. }
  115.  
  116.  
  117. }
  118.  
  119. void matrix_inc_output(int **inc, int m, int n){
  120. cout << "Матриця iнцидентностi : " << endl;
  121. for (int i = 0; i<m; i++){
  122. for (int j = 0; j<n; j++){
  123. cout << setw(3) << inc[i][j];
  124. }
  125. cout << endl;
  126. }
  127. }
  128.  
  129. void matrix_sum_output(int **sum, int m){
  130. cout << "Матриця сумiнжностi : " << endl;
  131. for (int i = 0; i<m; i++){
  132. for (int j = 0; j<m; j++){
  133. cout << setw(2) << sum[i][j];
  134. }
  135. cout << endl;
  136. }
  137. }
  138.  
  139. void delete_matrix(int **inc, int **sum, int m){
  140. for ( int i = 0; i<m; i++)
  141. {
  142. delete inc[i];
  143. delete sum[i];
  144. }
  145. delete[] inc;
  146. delete[] sum;
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement