Created
May 7, 2020 09:38
-
-
Save qutal/7d645689882f24da4edf1c2056acc0cf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// laba3.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. | |
// | |
#include <iostream> | |
#include "fstream" | |
using namespace std; | |
void func4() { | |
ofstream write; | |
write.open("ouput.txt"); | |
int n; | |
int k; | |
/*Ввод n и k с проверками*/ | |
cout << "Введите n" << '\t'; | |
cin >> n; | |
cout << endl; | |
while (!(n > 0 && n <=7)) { | |
cout << "Неправильный ввод n"; | |
cout << endl; | |
cout << "Введите n" << '\t'; | |
cin >> n; | |
cout << endl; | |
} | |
cout << "Введите k" << '\t'; | |
cin >> k; | |
cout << endl; | |
while (!(k > 0 && k <=27)) { | |
cout << "Неправильный ввод k"; | |
cout << endl; | |
cout << "Введите k" << '\t'; | |
cin >> k; | |
cout << endl; | |
} | |
/*Конец ввода*/ | |
//Матрица инцидентности. Двумерный массив на n столбцов и k строк | |
int** incidenceMatrix; | |
/*Создание матрицы и заполнение ее 0*/ | |
incidenceMatrix = new int* [n]; | |
for (int i = 0;i < n;i++) { | |
incidenceMatrix[i] = new int[k]; | |
for (int j = 0;j < k;j++) { | |
incidenceMatrix[i][j] = 0; | |
} | |
} | |
/*Конец создания*/ | |
/*Заолнение матрицы инцидентности с клавиатуры*/ | |
int a=0, b=0,c; | |
//заполнение прекратится, при вводе двух -1 | |
while (true) | |
{ | |
cout << "Введите вершину" << '\t'; | |
cin >> a; | |
cout << endl; | |
cout << "Введите ребро" << '\t'; | |
cin >> b; | |
cout << endl; | |
cout << "Если это петля, введите 1, иначе - 0" << '\t'; | |
cin >> c; | |
cout << endl; | |
//конец ввода | |
if (a == -1 && b == -1) { | |
cout << "Конец ввода" << endl; | |
break; | |
} | |
//ошибки | |
if (a < 0 || b < 0 || a>=n || b>=k || c<0 ||c>1) { | |
cout << "Неправильная вершина или ребро, или указание петли" << endl; | |
continue; | |
} | |
//если все норм, сохраняем связь в матрице | |
incidenceMatrix[a][b] = c == 1 ? 1 : 2; | |
} | |
/*Конец заполнения*/ | |
/*Вывод матрицы в консоль*/ | |
cout << "\n\n" << "ВЫВОД МАТРИЦЫ" << "\n\n"; | |
cout << '\t'; | |
for (int j = 0;j < k;j++) { | |
cout << j << '\t'; | |
} | |
cout << endl; | |
for (int j = 0;j < k;j++) { | |
cout << "-----"; | |
} | |
cout << endl; | |
for (int i = 0;i < n;i++) { | |
cout << i <<'|'<< '\t'; | |
for (int j = 0;j < k;j++) { | |
cout << incidenceMatrix[i][j] << '\t'; | |
} | |
cout << endl; | |
} | |
/*Конец вывода*/ | |
/*Вывод матрицы в файл*/ | |
write << "\n\n" << "ВЫВОД МАТРИЦЫ" << "\n\n"; | |
write << '\t'; | |
for (int j = 0;j < k;j++) { | |
write << j << '\t'; | |
} | |
write << endl; | |
for (int j = 0;j < k;j++) { | |
write << "-----"; | |
} | |
write << endl; | |
for (int i = 0;i < n;i++) { | |
write << i << '|' << '\t'; | |
for (int j = 0;j < k;j++) { | |
write << incidenceMatrix[i][j] << '\t'; | |
} | |
write << endl; | |
} | |
/*Конец вывода*/ | |
//переменная для посчета степеней | |
int r = 0; | |
/*Вывод результатов в консоль(степень вершин вычисляем тут же)*/ | |
cout << "\n\n" << "ВЫВОД СТЕПЕНЕЙ" << "\n\n"; | |
for (int i = 0;i < n;i++) { | |
r = 0; | |
for (int j = 0;j < k;j++) { | |
if (incidenceMatrix[i][j] != 0) { | |
r += incidenceMatrix[i][j]; | |
} | |
} | |
cout << "Вершина" << i << ": " << r << endl; | |
} | |
/*Конец*/ | |
/*Вывод результатов в файл(степень вершин вычисляем тут же)*/ | |
write << "\n\n" << "ВЫВОД СТЕПЕНЕЙ" << "\n\n"; | |
for (int i = 0;i < n;i++) { | |
r = 0; | |
for (int j = 0;j < k;j++) { | |
if (incidenceMatrix[i][j] != 0) { | |
r+=incidenceMatrix[i][j]; | |
} | |
} | |
write << "Вершина"<<i<<": " << r << endl; | |
} | |
/*Конец*/ | |
write.close(); | |
} | |
int main() | |
{ | |
setlocale(LC_ALL, "Rus"); | |
func4(); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment