Advertisement
barbos01

Untitled

Nov 11th, 2021
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. int mat_adiacenta[20][20] = { 0 }, mat_incidenta[20][20] = { 0 }, n = 0, m = 0, la_e1[20], la_e2[20], pozitie, lista_pozitie[20], lista_succesori[20], lista_predecesori[20];
  6. int succ, pred,i,j;
  7.  
  8. void citire_ma() {
  9. ifstream fin("mat_adiacenta.in.txt");
  10. fin >> n;
  11.  
  12. for (int i = 1; i <= n; i++)
  13. for (int j = 1; j <= n; j++)
  14. fin >> mat_adiacenta[i][j];
  15. fin.close();
  16. }
  17. void citire_mi() {
  18. ifstream fin("mat_incidenta.in.txt");
  19. fin >> n>>m;
  20.  
  21. for (int i = 1; i <= n; i++)
  22. for (int j = 1; j <= m; j++)
  23. fin >> mat_incidenta[i][j];
  24. fin.close();
  25. }
  26. void citire_la() {
  27. int i;
  28. ifstream fin("lista_arce.in.txt");
  29. fin >> n >> m;
  30. for (i = 1; i <= m; i++) {
  31. fin >> la_e1[i];
  32. }
  33. for (i = 1; i <= m; i++) {
  34. fin >> la_e2[i];
  35. }
  36. }
  37. void afisare_matrice(int matrice[20][20], int n, int m) {
  38. for (int i = 1; i <= n; i++)
  39. {
  40. for (int j = 1; j <= m; j++)
  41. cout << matrice[i][j] << " ";
  42. cout << endl;
  43. }
  44. }
  45. void afisare_vector(int vector[20], int m) {
  46. for (int i = 1; i <= m; i++) {
  47. cout << vector[i] << " ";
  48. }
  49. }
  50. void mat_adiacenta_toall() {
  51.  
  52. for (int i = 1; i <= n; i++)
  53. for (int j = 1; j <= n; j++)
  54. {
  55. if (mat_adiacenta[i][j] == 1) {
  56. m++;
  57. mat_incidenta[i][m] = 1;
  58. mat_incidenta[j][m] = -1;
  59. }
  60.  
  61. }
  62. afisare_matrice(mat_incidenta, n, m);
  63. cout << endl;
  64. m = 0;
  65. for (int i = 1; i <= n; i++)
  66. for (int j = 1; j <= n; j++)
  67. {
  68. if (mat_adiacenta[i][j] == 1) {
  69. m++;
  70. la_e1[m] = i;
  71. la_e2[m] = j;
  72. }
  73.  
  74. }
  75. afisare_vector(la_e1, m); cout << endl;
  76. afisare_vector(la_e2, m); cout << endl; cout << endl; cout << endl;
  77. m = 1;
  78. lista_pozitie[m] = 1;
  79. pozitie = 0;
  80. for (int i = 1; i <= n; i++)
  81. {
  82. for (int j = 1; j <= n; j++)
  83. {
  84.  
  85. if (mat_adiacenta[i][j] == 1) {
  86. pozitie++;
  87. lista_succesori[pozitie] = j;
  88. }
  89.  
  90. }
  91. m++;
  92. lista_pozitie[m] = pozitie + 1;;
  93.  
  94. }
  95. afisare_vector(lista_pozitie, m); cout << endl;
  96. afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
  97. m = 1;
  98. lista_pozitie[m] = 1;
  99. pozitie = 0;
  100. for (int j = 1; j <= n; j++)
  101. {
  102. for (int i = 1; i <= n; i++)
  103. {
  104.  
  105. if (mat_adiacenta[i][j] == 1) {
  106. pozitie++;
  107. lista_predecesori[pozitie] = i;
  108. }
  109.  
  110. }
  111. m++;
  112. lista_pozitie[m] = pozitie + 1;;
  113.  
  114. }
  115. afisare_vector(lista_pozitie, m); cout << endl;
  116. afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
  117. }
  118. void mat_incidenta_toall() {
  119. for (j = 1; j <= m; j++) {
  120. for (i = 1; i <= n; i++) {
  121. if (mat_incidenta[i][j] == 1)
  122. succ = i;
  123. if (mat_incidenta[i][j] == -1)
  124. pred = i;
  125. }
  126. mat_adiacenta[succ][pred] = 1;
  127. }
  128.  
  129. afisare_matrice(mat_adiacenta, n, m); cout << endl; cout << endl; cout << endl;
  130. pozitie = 0;
  131. for (j = 1; j <= m; j++) {
  132. pozitie++;
  133. for (i = 1; i <= n; i++) {
  134. if (mat_incidenta[i][j] == 1)
  135. la_e1[pozitie] = i;
  136. if (mat_incidenta[i][j] == -1)
  137. la_e2[pozitie] = i;
  138. }
  139. }
  140. afisare_vector(la_e1, pozitie); cout << endl;
  141. afisare_vector(la_e2, pozitie); cout << endl; cout << endl; cout << endl;
  142. int k=1;
  143. pozitie = 0;
  144. lista_pozitie[k] = 1;
  145. for (j = 1; j <= m; j++) {
  146. for (i = 1; i <= n; i++) {
  147. if (mat_incidenta[i][j] == -1) {
  148. pozitie++;
  149. lista_succesori[pozitie] = i;
  150. }
  151. }
  152. k++;
  153. lista_pozitie[k] = pozitie + 2;
  154.  
  155. }
  156. afisare_vector(lista_pozitie, k); cout << endl;
  157. afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
  158. k = 1;
  159. pozitie = 0;
  160. lista_pozitie[k] = 1;
  161. int indice;
  162. for (i = 1; i <= m; i++) {
  163. for (j = 1; j <= m; j++) {
  164. if (mat_incidenta[i][j] == -1) {
  165. for (indice = 1; indice <= n; indice++)
  166. {
  167. if (mat_incidenta[indice][j] == 1)
  168. {
  169. pozitie++;
  170. lista_predecesori[pozitie] = indice;
  171.  
  172. }
  173. }
  174. }
  175. }
  176. k++;
  177. lista_pozitie[k] = pozitie + 1;
  178.  
  179. }
  180. k -= 2;
  181. afisare_vector(lista_pozitie, k); cout << endl;
  182. afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
  183.  
  184.  
  185. }
  186. void lista_arce_toall() {
  187. int i, j;
  188. for (i = 1; i <= m; i++) {
  189. mat_adiacenta[la_e1[i]][la_e2[i]] = 1;
  190. }
  191. afisare_matrice(mat_adiacenta, n, n); cout << endl; cout << endl; cout << endl;
  192. j = 0;
  193. for (i = 1; i <= m; i++) {
  194. j++;
  195. mat_incidenta[la_e1[j]][i] = 1;
  196. mat_incidenta[la_e2[j]][i] = -1;
  197.  
  198. }
  199. afisare_matrice(mat_incidenta, n, m); cout << endl; cout << endl; cout << endl;
  200. pozitie = 0;
  201. int k = 1;
  202. lista_pozitie[k] = 1;
  203. int arc = 1;
  204. for (i = 1; i <= m; i++) {
  205. if (arc == la_e1[i]) {
  206. pozitie++;
  207. lista_succesori[pozitie] = la_e2[i];
  208. }
  209. else {
  210. arc++;
  211. k++;
  212. lista_pozitie[k] = pozitie + 1;
  213. i--;
  214. }
  215. }
  216. k++;
  217. lista_pozitie[k] = pozitie + 1;
  218. afisare_vector(lista_pozitie, k); cout << endl;
  219. afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
  220.  
  221. arc = 1;
  222. pozitie = 0;
  223. k = 1;
  224. lista_pozitie[k] = 1;
  225. while (arc != m) {
  226. for (i = 1; i <= m; i++) {
  227. if (arc == la_e2[i]) {
  228. pozitie++;
  229. lista_predecesori[pozitie] = la_e1[i];
  230. }
  231.  
  232. }
  233. arc++;
  234. k++;
  235. lista_pozitie[k] = pozitie + 1;
  236.  
  237. }
  238. k--;
  239. afisare_vector(lista_pozitie, k); cout << endl;
  240. afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
  241. }
  242.  
  243. int menu() {
  244. int opt;
  245.  
  246. cout << "\nAlegeti una dintre optiunile(1-5)";
  247. cout << "\n1. Matricea de adiacenta la celelalte reprezentari;";
  248. cout << "\n2. Matricea de incidenta la celelalte reprezentari;";
  249. cout << "\n3. Lista arcelor la celelalte reprezentari;";
  250. cout << "\n4. Lista succesorilor la celelalte reprezentari;";
  251. cout << "\n5. Lista predecesorilor la celelalte reprezentari;";
  252. cout << "\n6. Iesire din meniu.";
  253. cout << "\nOptiunea dumneavoastra este: "; cin >> opt;
  254. return opt;
  255.  
  256. }
  257.  
  258. int main()
  259. {
  260. int optiune;
  261. optiune = menu();
  262. switch (optiune)
  263. {
  264. case 1:
  265. citire_ma();
  266. mat_adiacenta_toall();
  267. break;
  268. case 2:
  269. citire_mi();
  270. mat_incidenta_toall();
  271. break;
  272. case 3:
  273. citire_la();
  274. lista_arce_toall();
  275. break;
  276. case 4:
  277. break;
  278. case 5:
  279. break;
  280. case 6:
  281. exit(0);
  282. default:
  283. break;
  284. }
  285.  
  286.  
  287.  
  288. return 0;
  289. }
  290.  
  291.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement