Advertisement
barbos01

TEMA ZELINA

Nov 21st, 2021
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 19.67 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. }//functie pentru citirea matricei de adiacenta
  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. }//functie pentru citirea matricei de incidenta
  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. }//functie pentru citirea listei de arce
  37. void citire_ls() {
  38.     int i;
  39.     ifstream fin("lista_succesori.in.txt");
  40.     fin >> n >> m;
  41.     for (i = 1; i <= n + 1; i++)
  42.         fin >> lista_pozitie[i];
  43.     for (i = 1; i <= m; i++)
  44.         fin >> lista_succesori[i];
  45.  
  46. }//functie pentru citirea listei de succesori
  47. void citire_lp() {
  48.     int i;
  49.     ifstream fin("lista_predecesori.in.txt");
  50.     fin >> n >> m;
  51.     for (i = 1; i <= n + 1; i++)
  52.         fin >> lista_pozitie[i];
  53.     for (i = 1; i <= m; i++)
  54.         fin >> lista_predecesori[i];
  55.  
  56. }//functie pentru citirea listei de predecesori
  57. void afisare_matrice(int matrice[20][20], int n, int m) {
  58.     for (int i = 1; i <= n; i++)
  59.     {
  60.         for (int j = 1; j <= m; j++)
  61.             cout << matrice[i][j] << " ";
  62.         cout << endl;
  63.     }
  64.     cout << "\n";
  65. }//functie pentru afisarea oricarei matrice
  66. void afisare_vector(int vector[20], int m) {
  67.     for (int i = 1; i <= m; i++) {
  68.         cout << vector[i] << " ";
  69.     }
  70.     cout << "\n";
  71. }//functie pentru afisarea oricarui vector
  72. void mat_adiacenta_toall() {
  73.  
  74.     for (int i = 1; i <= n; i++)//parcurgem matricea de adiacenta
  75.         for (int j = 1; j <= n; j++)
  76.             {
  77.             if (mat_adiacenta[i][j] == 1) {//cand gasim legatura dintre doua noduri
  78.                 m++;//trecem la o coloana noua care reprezinta un arc nou
  79.                 mat_incidenta[i][m] = 1;//introducem pe pozitia coloana si indicele i care reprezinta partea superioara a arcului pe 1
  80.                 mat_incidenta[j][m] = -1;//introducem pe pozitia coloana si indicele j care reprezinta partea inferioara a arcului pe 1
  81.                 }
  82.  
  83.             }
  84.     afisare_matrice(mat_incidenta, n, m);//afisam matricea de incidenta
  85.     cout << endl;
  86.     m = 0;
  87.     for (int i = 1; i <= n; i++)//parcurgem matricea de adiacenta
  88.         for (int j = 1; j <= n; j++)
  89.         {
  90.             if (mat_adiacenta[i][j] == 1) {//cand gasim legatura dintre doua noduri ce este reprezentata prin cifra 1
  91.                 m++;//crestem indicele de parcurgere a listelor
  92.                 la_e1[m] = i;//introucem in lista de noduri superioare pe i ce reprezinta nodul superior al arcului
  93.                 la_e2[m] = j;//introducem in lista de noduri inferioare pe j ce reprezinta nodul inferior al arcului
  94.             }
  95.  
  96.         }
  97.     afisare_vector(la_e1, m); //afisam cei doi vectori, care impreuna reprezinta lista de arce
  98.     afisare_vector(la_e2, m); cout << endl; cout << endl; cout << endl;
  99.     m = 1;
  100.     lista_pozitie[m] = 1;// pe prima pozitie a listei de pozitii punem 1 deoarece in lista de succesori o sa incepem sa punem de pe prima pozitie
  101.     pozitie = 0;//acesta reprezinta indicele de parcurgere a listei de succesori
  102.     for (int i = 1; i <= n; i++)//parcurgem matricea de adiacenta
  103.     {
  104.         for (int j = 1; j <= n; j++)
  105.         {
  106.  
  107.             if (mat_adiacenta[i][j] == 1) {//cand gasim legatura dintre doua noduri ce este reprezentata prin cifra 1
  108.                 pozitie++;//crestem pozitia pe care o sa adaugam noul nod ce reprezinta un nod succesor al altui nod
  109.                 lista_succesori[pozitie] = j;//adaugam nodul respectiv
  110.             }
  111.  
  112.         }
  113.         m++;
  114.         lista_pozitie[m] = pozitie + 1;//adaugam in lista de pozitii, pozitia de unde urmatorul nod va urma sa-si puna nodurile succesoare
  115.  
  116.     }
  117.     afisare_vector(lista_pozitie, m); //afisam lista de succesori
  118.     afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
  119.     m = 1;
  120.     lista_pozitie[m] = 1;// pe prima pozitie a listei de pozitii punem 1 deoarece in lista de predecesori o sa incepem sa punem de pe prima pozitie
  121.     pozitie = 0;//acesta reprezinta indicele de parcurgere a listei de predecesori
  122.     for (int j = 1; j <= n; j++)//parcurgem matricea de adiacenta
  123.     {
  124.         for (int i = 1; i <= n; i++)
  125.         {
  126.  
  127.             if (mat_adiacenta[i][j] == 1) {//cand gasim legatura dintre doua noduri ce este reprezentata prin cifra 1
  128.                 pozitie++;//crestem pozitia pe care o sa adaugam noul nod ce reprezinta un nod predecesor al altui nod
  129.                 lista_predecesori[pozitie] = i;//adaugam nodul respectiv
  130.             }
  131.  
  132.         }
  133.         m++;
  134.         lista_pozitie[m] = pozitie + 1;//adaugam in lista de pozitii, pozitia de unde urmatorul nod va urma sa-si puna nodurile predecesoare
  135.  
  136.     }
  137.     afisare_vector(lista_pozitie, m);//afisam lista de predecesori
  138.     afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
  139. }
  140. void mat_incidenta_toall() {
  141.     for (j = 1; j <= m; j++) {//parcurgem matricea de incidenta
  142.         for (i = 1; i <= n; i++) {
  143.             if (mat_incidenta[i][j] == 1)//cand gasim  cifra 1, ce reprezinta un nod superior
  144.                 succ = i;//il atribuim variabilei succ
  145.             if (mat_incidenta[i][j] == -1)//cand gasim cifra -1, ce reprezinta un nod inferior
  146.                 pred = i;//il atribuim variabilei pred
  147.         }
  148.         mat_adiacenta[succ][pred] = 1;//la final, in matricea de adiacenta pe pozitia [succ][pred] inseram cifra 1, ce reprezinta arcul (succ, pred)
  149.    }
  150.    
  151.     afisare_matrice(mat_adiacenta, n, n); cout << endl; cout << endl; cout << endl;
  152.     pozitie = 0;
  153.     for (j = 1; j <= m; j++) {//parcurgem matricea de incidenta
  154.         pozitie++;
  155.         for (i = 1; i <= n; i++) {
  156.             if (mat_incidenta[i][j] == 1)//daca in matricea de incidenta gasim cifra 1, reprezinta faptul ca am gasit un nod superior
  157.                 la_e1[pozitie] = i;//pe care in adaugam in lista de noduri superioare(noduri predecesoare)
  158.             if (mat_incidenta[i][j] == -1)//daca in matricea de incidenta gasim cifra -1, reprezinta faptul ca am gasit un nod inferior
  159.                 la_e2[pozitie] = i;//pe care il adauam in lista de noduri inferioare(noduri succesoare)
  160.         }
  161.     }
  162.     afisare_vector(la_e1, pozitie);//afisam lista de arce reprezentata prin cei doi vectori
  163.     afisare_vector(la_e2, pozitie); cout << endl; cout << endl; cout << endl;
  164.     int k=1;
  165.     pozitie = 0;
  166.     lista_pozitie[k] = 1;//in lista de pozitii adaugam pe 1 deoarece in lista de succesori pe prima pozitie o sa adaugam succesori primului nod
  167.     for (j = 1; j <= m; j++) {//parcurgem matricea de incidenta
  168.         for (i = 1; i <= n; i++) {
  169.             if (mat_incidenta[i][j] == -1) {//daca gasim cifra -1 reprezinta faptul ca am gasit un nod ce reprezinta partea inferioara a unui arc(adica nod succesor)
  170.                 pozitie++;//crestem pozitia
  171.                 lista_succesori[pozitie] = i;//adaugam nodul in lista de succesori              
  172.             }
  173.         }
  174.         k++;//crestem indicele de parcurgere a listei de pozitii
  175.         lista_pozitie[k] = pozitie + 2;//adaugam pozitia de unde vom incepe sa adaugam noii succesori ai urmatorului nod
  176.  
  177.     }
  178.     afisare_vector(lista_pozitie, k-1);//afisam lista de succesori, reprezentate prin cei doi vectori
  179.     afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
  180.     k = 1;
  181.     pozitie = 0;
  182.     lista_pozitie[k] = 1;//in lista de pozitii adaugam pe 1 deoarece in lista de predecesori pe prima pozitie o sa adaugam succesori primului nod
  183.     int indice;
  184.     for (i = 1; i <= m; i++) {//parcurgem matricea de incidenta
  185.         for (j = 1; j <= m; j++) {
  186.             if (mat_incidenta[i][j] == -1) {//daca gasim cifra -1 ce reprezinta succesorul unui nod, va trebui sa cautam predecesorii sai pe aceiasi linie
  187.                 for (indice = 1; indice <= n; indice++)//cautam predecesorii pe aceiasi coloana pe care l-am gasit pe el
  188.                 {
  189.                     if (mat_incidenta[indice][j] == 1)//cand gasim un predecesor al nodului "j"
  190.                     {
  191.                         pozitie++;//crestem pozitia
  192.                         lista_predecesori[pozitie] = indice;//il adaugam in lista de predecesori
  193.  
  194.                     }
  195.                 }
  196.             }
  197.         }
  198.         k++;
  199.         lista_pozitie[k] = pozitie + 1;//adaugam pozitia in lista de pozitii
  200.  
  201.     }
  202.     k -= 2;
  203.     afisare_vector(lista_pozitie, k);//afisam lista de predecesori
  204.     afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
  205.  
  206.    
  207. }
  208. void lista_arce_toall() {
  209.     int i, j;
  210.     for (i = 1; i <= m; i++) {//parcurgem lista de arce
  211.         mat_adiacenta[la_e1[i]][la_e2[i]] = 1;//pe pozitia [la_e1][la_e2] o sa adaugam 1 in matricea de adiacenta, deoarece in mat de adiacenta indicii de parcurgere sunt nodurile grafului
  212.     }
  213.     afisare_matrice(mat_adiacenta, n, n); cout << endl; cout << endl; cout << endl;//afisam matricea de adiacenta
  214.     j = 0;
  215.     for (i = 1; i <= m; i++) {//parcurgem lista de arce
  216.         j++;
  217.         mat_incidenta[la_e1[j]][i] = 1;//pe pozitia [la_e1][i] o sa adaugam 1 deoarece la_e1[i] reprezinta nodul superior(nodul predecesor) al arcului
  218.         mat_incidenta[la_e2[j]][i] = -1;//pe pozitia [la_e2][i] o sa adaugam -1 deoarece la_e2[i] reprezinta nodul inferior(nodul succesor) al arcului
  219.        
  220.     }
  221.     afisare_matrice(mat_incidenta, n, m); cout << endl; cout << endl; cout << endl;//afisam matricea de incidenta
  222.     pozitie = 0;
  223.     int k = 1;
  224.     lista_pozitie[k] = 1;
  225.     int arc = 1;
  226.     for (i = 1; i <= m; i++) {//parcurgem lista de arce
  227.         if (arc == la_e1[i]) {//daca gasim nodul in lista de noduri superioare
  228.             pozitie++;//crestem pozitia
  229.             lista_succesori[pozitie] = la_e2[i];//adaugam in lista de succesori pe corespondentul nodului superior, care este la_e2[i] adica succesorul sau
  230.         }
  231.         else {//daca nu-l gasim
  232.             arc++;//trecem la urmatorul arc
  233.             k++;//crestem indicele de parcurgere a listi de pozitie
  234.             lista_pozitie[k] = pozitie + 1;//adaugam noua pozitie, de unde vom pune succesoruii urmatorului nod
  235.             i--;
  236.         }
  237.     }
  238.     k++;
  239.     lista_pozitie[k] = pozitie + 1;
  240.     afisare_vector(lista_pozitie, k);//afisam lista de succesori
  241.     afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
  242.    
  243.     arc = 1;
  244.     pozitie = 0;
  245.     k = 1;
  246.     lista_pozitie[k] = 1;
  247.     while (arc != m) {//parcurgem lista de arce
  248.         for (i = 1; i <= m; i++) {
  249.             if (arc == la_e2[i]) {//daca gasim nodul in lista de noduri inferioare
  250.                 pozitie++;//crestem pozitia
  251.                 lista_predecesori[pozitie] = la_e1[i];//adaugam in lista de predecesori pe corespondentul nodului inferior, care este la_e1[i] adica predecesorul sau
  252.             }
  253.            
  254.         }
  255.         arc++;//daca nu-l gasim
  256.         k++;//crestem indicele de parcurgere a listi de pozitie
  257.         lista_pozitie[k] = pozitie + 1;//adaugam noua pozitie, de unde vom pune predecesorii urmatorului nod
  258.  
  259.     }
  260.     k--;
  261.     afisare_vector(lista_pozitie, k);//afisam lista de predecesori
  262.     afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
  263. }
  264. void lista_succesor_toall() {
  265.     int i, j, nod, coloana;
  266.     nod = i = 1;
  267.     while (i < n + 1) {
  268.         for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {//parcurgem lista de pozitie, in care intre 2 poziti se afla un nod, iar lista_succesori[j] reprezinta succesorul acestuia
  269.             mat_adiacenta[nod][lista_succesori[j]] = 1;//introducem in matricea de adiacenta 1 pe pozitia [nod][lista_succesori[j]], unde lista_succesori[j] reprezinta succesorul nodului "nod"
  270.         }
  271.         nod++;// dupa ce terminam, trecem la urmatorul nod, pentru ai identifica succesorii
  272.         i++;
  273.     }
  274.     afisare_matrice(mat_adiacenta, n, n);//afisam matricea
  275.  
  276.     i = nod = coloana = 1;
  277.     while (i < n + 1) {
  278.         for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {//parcurgem lista de pozitie, in care intre 2 poziti se afla un nod, iar lista_succesori[j] reprezinta succesorul acestuia
  279.             mat_incidenta[nod][coloana] = 1;// introducem in matricea de incidenta 1 pe pozitia [nod][coloana] ce reprezinta capatul superior al arcului
  280.             mat_incidenta[lista_succesori[j]][coloana] = -1;// introducem in matricea de incidenta -1 pe pozitia [lista_succesori[j]][coloana] ce reprezinta capatul inferior al arcului
  281.             coloana++;//trecem la urmatoarea coloana(arc)
  282.         }
  283.         nod++;//trecem la urmatorul nod
  284.         i++;
  285.     }
  286.  
  287.     afisare_matrice(mat_incidenta, n, m);
  288.     nod = i = 1;
  289.     int k = 0;
  290.     while (i < n + 1) {
  291.         for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {
  292.             k++;
  293.             la_e1[k] = nod;//in lista de noduri superioare introducem pe "nod"
  294.             la_e2[k] = lista_succesori[j];//iar in lista de noduri inferioare il introducem pe nodul aferent nodului superior pentru a forma un arc.
  295.         }
  296.         nod++;
  297.         i++;
  298.     }
  299.     afisare_vector(la_e1, k);
  300.     afisare_vector(la_e2, k);
  301.     cout << "\n";
  302.     int lsPoz_pred[21] = { 0 }, predecesor, indice = 0;//initializari
  303.     pozitie = 1;
  304.     k = 1;
  305.     lsPoz_pred[k] = pozitie;//adaugam pe 1 pe in lista de pozitii deoarece de acolo vom incepe sa punem predecesorii primului nod(daca exista)
  306.     for (nod = 1; nod <= n; nod++) {//luam fiecare nod in parte
  307.         i = 1;
  308.         predecesor = 1;//ficare 2 intervale din lista_pozitii ii corespunde unui nod predecesor nodului din lista_succesori
  309.         while (i < n + 1) {//parcurgem acele intervale
  310.             for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {//luam doua intervale unde se gaseste predecesorul
  311.                 if (nod == lista_succesori[j]) {//daca gasim un nod care exista in lista_succesori
  312.                     indice++;//crestem indicele de parcurgere a liste_predecesori
  313.                     lista_predecesori[indice] = predecesor;   //il adaugam pe predecesor in lista
  314.                     pozitie++;//crestem pozitia
  315.                 }
  316.             }
  317.             i++;//trecem la urmatorul interval
  318.             predecesor++;//trecem la urmatorul predecesor pe care il cautam
  319.         }
  320.         k++;//crestem indicele de parcurgere a ls_Poz_Pred
  321.         lsPoz_pred[k] = pozitie;//adaugam pozitia de unde vom adauga nodurile predecesoare urmatorului nod succesor
  322.     }
  323.     afisare_vector(lsPoz_pred, k);//afisam lista de predecesori
  324.     afisare_vector(lista_predecesori, indice);
  325.  
  326. }
  327. void lista_predecesori_toall() {
  328.     int i, j, nod, coloana;
  329.     nod = i = 1;
  330.     while (i < n + 1) {
  331.         for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {//parcurgem lista de pozitie, in care intre 2 poziti se afla un nod, iar lista_predecesori[j] reprezinta predecesorul acestuia
  332.             mat_adiacenta[lista_predecesori[j]][nod] = 1;//introducem in matricea de adiacenta 1 pe pozitia [nod][lista_predecesori[j]], unde lista_predecesori[j] reprezinta predecesorul nodului "nod"
  333.         }
  334.         nod++;//trecem la urmatorul nod
  335.         i++;//trecem la urmatorul interval
  336.     }
  337.     afisare_matrice(mat_adiacenta, n, n);//afisam matricea de adiacenta
  338.  
  339.     i = nod = coloana = 1;
  340.     while (i < n + 1) {
  341.         for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {//parcurgem lista de pozitie, in care intre 2 poziti se afla un nod, iar lista_predecesori[j] reprezinta predecesorii acestuia
  342.             mat_incidenta[nod][coloana] = -1;// introducem in matricea de incidenta -1 pe pozitia [nod][coloana] ce reprezinta capatul inferior al arcului
  343.             mat_incidenta[lista_predecesori[j]][coloana] = 1;// introducem in matricea de incidenta 1 pe pozitia [lista_predecesori[j]][coloana] ce reprezinta capatul superior al arcului
  344.             coloana++;//trecem la urmatoarea coloana
  345.         }
  346.         nod++;//trecem la urmatorul nod
  347.         i++;//trecem la urmatorul interval
  348.     }
  349.  
  350.     afisare_matrice(mat_incidenta, n, m);
  351.     nod = i = 1;
  352.     int k = 0;
  353.     while (i < n + 1) {
  354.         for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {
  355.             k++;
  356.             la_e1[k] = lista_predecesori[j];//in lista de noduri superioare introducem pe "lista_predecesori[j]"
  357.             la_e2[k] = nod;//iar in lista de noduri inferioare il introducem pe nodul aferent nodului superior pentru a forma un arc.
  358.         }
  359.         nod++;//trecem la urmatorul nod
  360.         i++;//trecem la urmatorul interval
  361.     }
  362.     afisare_vector(la_e1, k);
  363.     afisare_vector(la_e2, k);
  364.     cout << "\n";
  365.     int lsPoz_succ[21] = { 0 }, succesor, indice = 0;//initializari
  366.     pozitie = 1;
  367.     k = 1;
  368.     lsPoz_succ[k] = pozitie;//adaugam pe 1 pe in lista de pozitii deoarece de acolo vom incepe sa punem predecesorii primului nod(daca exista)
  369.     for (nod = 1; nod <= n; nod++) {//luam fiecare nod in parte
  370.         i = 1;
  371.         succesor = 1;//ficare 2 intervale din lista_pozitii ii corespunde unui nod succesor nodului din lista_predecesori
  372.         while (i < n + 1) {//parcurgem acele intervale
  373.             for (j = lista_pozitie[i]; j < lista_pozitie[i + 1]; j++) {//luam doua intervale unde se gaseste succesorul
  374.                 if (nod == lista_predecesori[j]) {//daca gasim un nod care exista in lista_predecesori
  375.                     indice++;//crestem indicele de parcurgere a liste_succesori
  376.                     lista_succesori[indice] = succesor;//il adaugam pe predecesor in lista
  377.                     pozitie++;//crestem pozitia
  378.                 }
  379.             }
  380.             i++;//trecem la urmatorul interval
  381.             succesor++;//trecem la urmatoul succesor pe care il cautam
  382.         }
  383.         k++;//crestem indicelui de parcurgere a lsPoz_Succ
  384.         lsPoz_succ[k] = pozitie;//adaugam pozitia de unde vom adauga nodurile succesori urmatorului nod predecesor
  385.     }
  386.     afisare_vector(lsPoz_succ, k);//afisam lista de succesori
  387.     afisare_vector(lista_succesori, indice);
  388. }
  389. int menu() {
  390.     int opt;
  391.    
  392.         cout << "\nAlegeti una dintre optiunile(1-5)";
  393.         cout << "\n1. Matricea de adiacenta la celelalte reprezentari;";
  394.         cout << "\n2. Matricea de incidenta la celelalte reprezentari;";
  395.         cout << "\n3. Lista arcelor la celelalte reprezentari;";
  396.         cout << "\n4. Lista succesorilor la celelalte reprezentari;";
  397.         cout << "\n5. Lista predecesorilor la celelalte reprezentari;";
  398.         cout << "\n6. Iesire din meniu.";
  399.         cout << "\nOptiunea dumneavoastra este: "; cin >> opt;
  400.         return opt;
  401.      
  402. }//functie de afisare a meniului
  403.  
  404. int main()
  405. {
  406.     int optiune;
  407.     optiune = menu();
  408.     switch (optiune)
  409.     {
  410.     case 1:
  411.         citire_ma();
  412.         mat_adiacenta_toall();
  413.         break;
  414.     case 2:
  415.         citire_mi();
  416.         mat_incidenta_toall();
  417.         break;
  418.     case 3:
  419.         citire_la();
  420.         lista_arce_toall();
  421.         break;
  422.     case 4:
  423.         citire_ls();
  424.         lista_succesor_toall();
  425.         break;
  426.     case 5:
  427.         citire_lp();
  428.         lista_predecesori_toall();
  429.         break;
  430.     case 6:
  431.         exit(0);
  432.     default:
  433.         break;
  434.     }
  435.    
  436.    
  437.    
  438.         return 0;
  439. }
  440.    
  441.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement