Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <fstream>
- #include <iomanip>
- #include <cassert>
- using namespace std;
- int **graph(int&, int&);
- int **matrixinc_create(int, int);
- int **matrixsum_create(int);
- void matrix_sum_input(int **, int **, int);
- void matrix_inc_input(int **, int **, int, int);
- void check(int **, int **, int, int);
- void matrix_inc_output(int **, int, int);
- void matrix_sum_output(int **, int);
- void delete_matrix(int **, int **, int);
- int main()
- {
- setlocale(LC_ALL,"ukrainian");
- int m, n, **inc, **sum, **Graph;
- Graph = graph(m, n);
- inc = matrixinc_create(m, n);
- sum = matrixsum_create(m);
- matrix_sum_input(Graph, sum, m);
- matrix_inc_input(Graph, inc, m ,n);
- check(sum, inc, m, n);
- delete_matrix(inc, sum, m);
- _getch();
- return 0;
- }
- int **graph(int &m, int &n){
- ifstream fin;
- fin.open("graph");
- if (!fin.is_open())
- cout << "Файл не може бути вiдкрито!\n";
- else{
- fin >> m >> n;
- int ** graph = new int*[n];
- for (int i = 0 ; i<n ; i++)
- graph[i] = new int[2];
- for (int i = 0; i<n ; i++){
- fin >> graph[i][0] >> graph[i][1];
- }
- printf("Граф:\n");
- for (int i = 0; i < n; i++)
- printf("%3d %3d\n", graph [i][0], graph[i][1]);
- fin.close();
- return graph;
- }
- }
- int **matrixsum_create(int m){
- int **matrix = new int*[m];
- for (int i = 0; i<m; i++){
- matrix[i] = new int[m];
- for (int j = 0; j<m; j++)
- matrix[i][j] = 0;
- }
- return matrix;
- }
- int **matrixinc_create(int m, int n){
- int **matrix = new int*[n];
- for (int i = 0; i<m; i++){
- matrix[i] = new int[n];
- for (int j = 0; j<n; j++)
- matrix[i][j] = 0;
- }
- return matrix;
- }
- void matrix_sum_input(int **graph, int **sum, int m){
- int vf, vs;
- for (int i = 0; i<=m+2; i++){
- vf = graph[i][0];
- vs = graph[i][1];
- sum[vf-1][vs-1] = 1;
- }
- }
- void matrix_inc_input(int **graph, int **inc, int m, int n){
- int vf, vs;
- for (int i = 0;i<n;i++) {
- vf = graph[i][0];
- vs = graph[i][1];
- if (vf == vs)
- inc[vf-1][i] = 2;
- else {
- inc[vf-1][i]= -1;
- inc[vs-1][i]= 1;
- }
- }
- }
- void check(int **sum, int **inc, int m, int n){
- int trigg;
- bool temp = true;
- while(temp){
- cout << "Вивести матрицю сумiжностi(1) чи iнцидентностi(2)? Введiть 1, 2 або 3 (для виходу) :";
- cin >> trigg;
- switch (trigg) {
- case 1 : matrix_sum_output(sum, m); break;
- case 2 : matrix_inc_output(inc, m, n); break;
- case 3 : return;
- default: temp = false;
- }
- }
- }
- void matrix_inc_output(int **inc, int m, int n){
- cout << "Матриця iнцидентностi : " << endl;
- for (int i = 0; i<m; i++){
- for (int j = 0; j<n; j++){
- cout << setw(3) << inc[i][j];
- }
- cout << endl;
- }
- }
- void matrix_sum_output(int **sum, int m){
- cout << "Матриця сумiнжностi : " << endl;
- for (int i = 0; i<m; i++){
- for (int j = 0; j<m; j++){
- cout << setw(2) << sum[i][j];
- }
- cout << endl;
- }
- }
- void delete_matrix(int **inc, int **sum, int m){
- for ( int i = 0; i<m; i++)
- {
- delete inc[i];
- delete sum[i];
- }
- delete[] inc;
- delete[] sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement