SHARE
TWEET

Untitled

maxrusmos Jan 21st, 2020 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <QDebug>
  3. #include <QList>
  4. #include <QVector>
  5.  
  6.  
  7. // Получает матрицу смежности по базе
  8. QVector<QVector<int>> baseToMatrix(QList<QList<int>> base) {
  9.     int max = base[0][1];
  10.     for (int i = 1; i < base.size(); ++i) {
  11.         if (base[i][1] > max)
  12.             max = base[i][1];
  13.     }
  14.  
  15.     // Строим квадратную матрицу нулей
  16.     QVector<QVector<int>> m(max, QVector<int> (max, 0));
  17.  
  18.     // Заполняем матрицу смежности
  19.     for (QList<int> b: base)
  20.         for (int i = 0; i < b[0]; ++i)
  21.             for (int j = b[0] - 1; j < b[1]; ++j)
  22.                 if (i != j) {
  23.                     m[i][j] = 1;
  24.                     m[j][i] = 1;
  25.                 }
  26.   return m;
  27. }
  28.  
  29.  
  30. // Получает вектор степеней вершин по матрице смежности
  31. QVector<int> matrixToVector(QVector<QVector<int>> matrix) {
  32.     int n = matrix.size();
  33.     QVector<int> vect(n, 0);
  34.  
  35.     for (int i = 0; i < n; ++i)
  36.         for (int j = 0; j < n ; ++j)
  37.             if (matrix[i][j] != 0) {
  38.                 vect[i]++;
  39.                 vect[j]++;
  40.             }
  41.  
  42.     return vect;
  43. }
  44.  
  45.  
  46. // Проверка, правильно ли задана база
  47. bool baseIsCorrect(QList<QList<int>> base) {
  48.     for (int i = 0; i < base.size() - 1; ++i)
  49.         if (base[i][0] > base[i+1][0] || base[i][1] < base[i+1][1])
  50.             return false;
  51.  
  52.     return true;
  53. }
  54.  
  55.  
  56. void lab11(QList<QList<int>> base1, QList<QList<int>> base2) {
  57.     QVector<QVector<int>> m1 = baseToMatrix(base1);
  58.     QVector<QVector<int>> m2 = baseToMatrix(base2);
  59.  
  60.  
  61.     QVector<int> v1 = matrixToVector(m1);
  62.     QVector<int> v2 = matrixToVector(m2);
  63.  
  64.     qDebug() << m1 << endl << endl << m2 << endl << endl << v1 << endl << v2;
  65.  
  66. }
  67.  
  68.  
  69. int main() {
  70.     QList<QList<int>> base1 = {QList<int>{1, 7}, QList<int>{5, 3}};
  71.     QList<QList<int>> base2 = {QList<int>{1, 7}, QList<int>{2, 5}};
  72.  
  73.  
  74.     // Проверка что базы заданы верно
  75.     if (baseIsCorrect(base1) && baseIsCorrect(base2))
  76.         lab11(base1, base2);
  77.     else
  78.         qDebug() << "Базы заданы неверно";
  79.  
  80.     return 0;
  81. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top