Advertisement
maxrusmos

Untitled

Jan 21st, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement