Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- 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];
- int succ, pred,i,j;
- void citire_ma() {
- ifstream fin("mat_adiacenta.in.txt");
- fin >> n;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= n; j++)
- fin >> mat_adiacenta[i][j];
- fin.close();
- }
- void citire_mi() {
- ifstream fin("mat_incidenta.in.txt");
- fin >> n>>m;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= m; j++)
- fin >> mat_incidenta[i][j];
- fin.close();
- }
- void citire_la() {
- int i;
- ifstream fin("lista_arce.in.txt");
- fin >> n >> m;
- for (i = 1; i <= m; i++) {
- fin >> la_e1[i];
- }
- for (i = 1; i <= m; i++) {
- fin >> la_e2[i];
- }
- }
- void afisare_matrice(int matrice[20][20], int n, int m) {
- for (int i = 1; i <= n; i++)
- {
- for (int j = 1; j <= m; j++)
- cout << matrice[i][j] << " ";
- cout << endl;
- }
- }
- void afisare_vector(int vector[20], int m) {
- for (int i = 1; i <= m; i++) {
- cout << vector[i] << " ";
- }
- }
- void mat_adiacenta_toall() {
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= n; j++)
- {
- if (mat_adiacenta[i][j] == 1) {
- m++;
- mat_incidenta[i][m] = 1;
- mat_incidenta[j][m] = -1;
- }
- }
- afisare_matrice(mat_incidenta, n, m);
- cout << endl;
- m = 0;
- for (int i = 1; i <= n; i++)
- for (int j = 1; j <= n; j++)
- {
- if (mat_adiacenta[i][j] == 1) {
- m++;
- la_e1[m] = i;
- la_e2[m] = j;
- }
- }
- afisare_vector(la_e1, m); cout << endl;
- afisare_vector(la_e2, m); cout << endl; cout << endl; cout << endl;
- m = 1;
- lista_pozitie[m] = 1;
- pozitie = 0;
- for (int i = 1; i <= n; i++)
- {
- for (int j = 1; j <= n; j++)
- {
- if (mat_adiacenta[i][j] == 1) {
- pozitie++;
- lista_succesori[pozitie] = j;
- }
- }
- m++;
- lista_pozitie[m] = pozitie + 1;;
- }
- afisare_vector(lista_pozitie, m); cout << endl;
- afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
- m = 1;
- lista_pozitie[m] = 1;
- pozitie = 0;
- for (int j = 1; j <= n; j++)
- {
- for (int i = 1; i <= n; i++)
- {
- if (mat_adiacenta[i][j] == 1) {
- pozitie++;
- lista_predecesori[pozitie] = i;
- }
- }
- m++;
- lista_pozitie[m] = pozitie + 1;;
- }
- afisare_vector(lista_pozitie, m); cout << endl;
- afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
- }
- void mat_incidenta_toall() {
- for (j = 1; j <= m; j++) {
- for (i = 1; i <= n; i++) {
- if (mat_incidenta[i][j] == 1)
- succ = i;
- if (mat_incidenta[i][j] == -1)
- pred = i;
- }
- mat_adiacenta[succ][pred] = 1;
- }
- afisare_matrice(mat_adiacenta, n, m); cout << endl; cout << endl; cout << endl;
- pozitie = 0;
- for (j = 1; j <= m; j++) {
- pozitie++;
- for (i = 1; i <= n; i++) {
- if (mat_incidenta[i][j] == 1)
- la_e1[pozitie] = i;
- if (mat_incidenta[i][j] == -1)
- la_e2[pozitie] = i;
- }
- }
- afisare_vector(la_e1, pozitie); cout << endl;
- afisare_vector(la_e2, pozitie); cout << endl; cout << endl; cout << endl;
- int k=1;
- pozitie = 0;
- lista_pozitie[k] = 1;
- for (j = 1; j <= m; j++) {
- for (i = 1; i <= n; i++) {
- if (mat_incidenta[i][j] == -1) {
- pozitie++;
- lista_succesori[pozitie] = i;
- }
- }
- k++;
- lista_pozitie[k] = pozitie + 2;
- }
- afisare_vector(lista_pozitie, k); cout << endl;
- afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
- k = 1;
- pozitie = 0;
- lista_pozitie[k] = 1;
- int indice;
- for (i = 1; i <= m; i++) {
- for (j = 1; j <= m; j++) {
- if (mat_incidenta[i][j] == -1) {
- for (indice = 1; indice <= n; indice++)
- {
- if (mat_incidenta[indice][j] == 1)
- {
- pozitie++;
- lista_predecesori[pozitie] = indice;
- }
- }
- }
- }
- k++;
- lista_pozitie[k] = pozitie + 1;
- }
- k -= 2;
- afisare_vector(lista_pozitie, k); cout << endl;
- afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
- }
- void lista_arce_toall() {
- int i, j;
- for (i = 1; i <= m; i++) {
- mat_adiacenta[la_e1[i]][la_e2[i]] = 1;
- }
- afisare_matrice(mat_adiacenta, n, n); cout << endl; cout << endl; cout << endl;
- j = 0;
- for (i = 1; i <= m; i++) {
- j++;
- mat_incidenta[la_e1[j]][i] = 1;
- mat_incidenta[la_e2[j]][i] = -1;
- }
- afisare_matrice(mat_incidenta, n, m); cout << endl; cout << endl; cout << endl;
- pozitie = 0;
- int k = 1;
- lista_pozitie[k] = 1;
- int arc = 1;
- for (i = 1; i <= m; i++) {
- if (arc == la_e1[i]) {
- pozitie++;
- lista_succesori[pozitie] = la_e2[i];
- }
- else {
- arc++;
- k++;
- lista_pozitie[k] = pozitie + 1;
- i--;
- }
- }
- k++;
- lista_pozitie[k] = pozitie + 1;
- afisare_vector(lista_pozitie, k); cout << endl;
- afisare_vector(lista_succesori, pozitie); cout << endl; cout << endl; cout << endl;
- arc = 1;
- pozitie = 0;
- k = 1;
- lista_pozitie[k] = 1;
- while (arc != m) {
- for (i = 1; i <= m; i++) {
- if (arc == la_e2[i]) {
- pozitie++;
- lista_predecesori[pozitie] = la_e1[i];
- }
- }
- arc++;
- k++;
- lista_pozitie[k] = pozitie + 1;
- }
- k--;
- afisare_vector(lista_pozitie, k); cout << endl;
- afisare_vector(lista_predecesori, pozitie); cout << endl; cout << endl; cout << endl;
- }
- int menu() {
- int opt;
- cout << "\nAlegeti una dintre optiunile(1-5)";
- cout << "\n1. Matricea de adiacenta la celelalte reprezentari;";
- cout << "\n2. Matricea de incidenta la celelalte reprezentari;";
- cout << "\n3. Lista arcelor la celelalte reprezentari;";
- cout << "\n4. Lista succesorilor la celelalte reprezentari;";
- cout << "\n5. Lista predecesorilor la celelalte reprezentari;";
- cout << "\n6. Iesire din meniu.";
- cout << "\nOptiunea dumneavoastra este: "; cin >> opt;
- return opt;
- }
- int main()
- {
- int optiune;
- optiune = menu();
- switch (optiune)
- {
- case 1:
- citire_ma();
- mat_adiacenta_toall();
- break;
- case 2:
- citire_mi();
- mat_incidenta_toall();
- break;
- case 3:
- citire_la();
- lista_arce_toall();
- break;
- case 4:
- break;
- case 5:
- break;
- case 6:
- exit(0);
- default:
- break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement