Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <QDebug>
- #include <QList>
- #include <QVector>
- // Получает матрицу смежности по базе
- QVector<QVector<int>> baseToMatrix(QList<QList<int>> base) {
- int max = base[0][1];
- for (int i = 1; i < base.size(); ++i) {
- if (base[i][1] > max)
- max = base[i][1];
- }
- // Строим квадратную матрицу нулей
- QVector<QVector<int>> m(max, QVector<int> (max, 0));
- // Заполняем матрицу смежности
- for (QList<int> b: base)
- for (int i = 0; i < b[0]; ++i)
- for (int j = b[0] - 1; j < b[1]; ++j)
- if (i != j) {
- m[i][j] = 1;
- m[j][i] = 1;
- }
- return m;
- }
- // Получает вектор степеней вершин по матрице смежности
- QVector<int> matrixToVector(QVector<QVector<int>> matrix) {
- int n = matrix.size();
- QVector<int> vect(n, 0);
- for (int i = 0; i < n; ++i)
- for (int j = 0; j < n ; ++j)
- if (matrix[i][j] != 0) {
- vect[i]++;
- vect[j]++;
- }
- return vect;
- }
- // Проверка, правильно ли задана база
- bool baseIsCorrect(QList<QList<int>> base) {
- for (int i = 0; i < base.size() - 1; ++i)
- if (base[i][0] > base[i+1][0] || base[i][1] < base[i+1][1])
- return false;
- return true;
- }
- void lab11(QList<QList<int>> base1, QList<QList<int>> base2) {
- QVector<QVector<int>> m1 = baseToMatrix(base1);
- QVector<QVector<int>> m2 = baseToMatrix(base2);
- QVector<int> v1 = matrixToVector(m1);
- QVector<int> v2 = matrixToVector(m2);
- qDebug() << m1 << endl << endl << m2 << endl << endl << v1 << endl << v2;
- }
- int main() {
- QList<QList<int>> base1 = {QList<int>{1, 7}, QList<int>{5, 3}};
- QList<QList<int>> base2 = {QList<int>{1, 7}, QList<int>{2, 5}};
- // Проверка что базы заданы верно
- if (baseIsCorrect(base1) && baseIsCorrect(base2))
- lab11(base1, base2);
- else
- qDebug() << "Базы заданы неверно";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement