Advertisement
barbos01

Untitled

Nov 11th, 2021
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 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