fork download
  1. /*
  2. Ох блять я этот код весь день писал, задание пиздец ебаное оказалось
  3. Я его написал, но оно выглядит давольно нелепо и я уверен его можно хоть чутка оптимизировать
  4. Дохуя вопросов по самому заданию появилось ты их спросишь у учитиля
  5. Ты мне пиздец как торчишь за него
  6. */
  7. /*
  8. !!!!!!!!!!!!!
  9. Короче я убрал переменные xyz из глобальных
  10. И передаю их в функцию solution
  11. В solution я ловлю аргумент по ссылку это вот этот символ &
  12. Чесн я хуй знает правильно ли это или нет
  13. Но пока по другому я не понял как делать
  14. Т.к. x y у нас меняются и мне нужно делать аргумент по ссылке
  15. Можно еще указатель исп. могу исправить если он выебываться начнет
  16. Как мне кажется тут сейчас все норм в функции main у нас обьявление переменных
  17. А в solution мы выполняем действия
  18. И я до сих пор не понял что такое процедура и какая разница между функцией
  19. */
  20. #include <iostream>
  21. #include <string>
  22. #include <stdio.h>
  23. #include <time.h>
  24. #include <iomanip>
  25. #include <math.h>
  26. /*
  27. тут библиотеки подключаем
  28. */
  29.  
  30. using namespace std; //чтобы каждый раз std:: не вызывать
  31. #define n = 7
  32.  
  33.  
  34.  
  35. int solution(int &x, int &y, int sq[][n]) //так тут функция прохождения по квадрату пока сюда не смотри мы еще сюда вернемся
  36. {
  37. /*
  38.   нам нужно проверить выходит ли x и y из размера массива, если уходит в плюс значит мы переходим на противоположенную строку(столбец) которая равна 0 (начальная строка)
  39.   */
  40. if (x > 6)
  41. x = 0;
  42. if (y > 6)
  43. y = 0;
  44. /*
  45.   тут тоже самое только если выходим из массива с миннусом и идем в ласт строку(столбец)
  46.   */
  47. if (x < 0)
  48. x = 6;
  49. if (y < 0)
  50. y = 6;
  51. /*
  52.   Вот мы перешли на новую строку(столбец), и даже если не перешли, нам нужно проверить, а не заполнена ли эта клетка
  53.   Изначально у нас все заполнено нулями, т.е. 0 это пустота
  54.   Вот и проверяем а равна ли нулю наша клетка
  55.   */
  56. if (sq[x][y] != 0)
  57. {
  58. /*
  59.   Если все таки не ровна нулю, то по условию мы должны вернуться назад
  60.   Для этого мы исп. две строки после коментария
  61.   */
  62. x++;
  63. y++;
  64. /*
  65.   Не забываем проверить а не выходим ли мы из массива
  66.   Проверяем мы только x потому что выйти дальше чем на 1 число нам не страшно, т.к. дальше будет вызвана рекурсия(об этом чуть позже)
  67.   По y проверять не нужно дальше чем на 1 число выйти не реально
  68.   */
  69. if (x > 6)
  70. x = 0;
  71. /*
  72.   Проверили не выходим ли и прибовляем (двигаемся вниз) так написанно в задание
  73.   */
  74. x++;
  75. /*
  76.   Вызываем саму себя, это назыввается рекурсия
  77.   Лучше пойди почитай про рекурсию без нее тут вообще никак
  78.   */
  79. solution(x,y,sq);
  80. }
  81. }
  82. int main() //главная функция тут все начинается
  83. {
  84. int x = 0; //нужна для перемещения по квадрату уже не глобально
  85. int y = 3; //тоже что и сверху но тут мы середину строки выбираем тут она равна 3, 3 потому что надо плюсовать 1
  86. int z = 1; //для заполнения нужно 1-2-3-4 и т.д.
  87. int max = pow(n,2); //мы проходим по квадрату 7x7 раз
  88. int sq[n][n]; // Создаем квадрат типа int размером 7x7 двумерным массивом
  89. /*
  90.   Я решил сделать так, заполнить массив нулями и потому его заполнять нужными нам числами
  91.   Ниже цикл по заполненюю массива нулями и сразу же вывод
  92.   */
  93. for (int i = 0; i < n; i++)
  94. {
  95. for (int j = 0; j < n; j++)
  96. {
  97. sq[i][j] = 0;
  98. cout << setw(4)<< sq[i][j];
  99. }
  100. cout << "\n"; //для красоты
  101. }
  102. cout << "\n"; //для красоты
  103. while (max > 0) // здесь нам и пригодилась max проходим мы по этому циклу 49 раз
  104. {
  105. solution(x, y, sq); //сразу же мы вызываем функцию magic и передаем в нее массив sq, переходи на 23 строку
  106. sq[x][y] = z;
  107. z++; //увеличиваем на 1
  108. x--; //двигаемся по стандарту вниз
  109. y--; //двигаемся по стандарту влево
  110. max--; //минусуем наш счетчик цикла
  111.  
  112. }
  113. /*
  114.   Ниже простой вызов нашего магического квадрата
  115.   */
  116. for (int i = 0; i < n; i++)
  117. {
  118. for (int j = 0; j < n; j++)
  119. {
  120. cout << setw(4)<< sq[i][j];
  121. }
  122. cout << "\n";
  123. }
  124. }
  125. /*
  126.   Весь код написан только под квадрат 7 на 7
  127.   Его изи переделать на любой размер, но это только если попросят
  128.   Запиши все что тебе говорит учитель
  129.   Так же можно ебануть проверку магический ли это квадрат
  130.   */
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:35:39: note: in expansion of macro ‘n’
 int solution(int &x, int &y, int sq[][n]) //так тут функция прохождения по квадрату пока сюда не смотри мы еще сюда вернемся
                                       ^
prog.cpp: In function ‘int solution(...)’:
prog.cpp:40:9: error: ‘x’ was not declared in this scope
     if (x > 6)
         ^
prog.cpp:42:9: error: ‘y’ was not declared in this scope
     if (y > 6)
         ^
prog.cpp:47:9: error: ‘x’ was not declared in this scope
     if (x < 0)
         ^
prog.cpp:49:9: error: ‘y’ was not declared in this scope
     if (y < 0)
         ^
prog.cpp:56:9: error: ‘sq’ was not declared in this scope
     if (sq[x][y] != 0)
         ^~
prog.cpp:56:12: error: ‘x’ was not declared in this scope
     if (sq[x][y] != 0)
            ^
prog.cpp:56:15: error: ‘y’ was not declared in this scope
     if (sq[x][y] != 0)
               ^
prog.cpp: In function ‘int main()’:
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:87:19: note: in expansion of macro ‘n’
     int max = pow(n,2); //мы проходим по квадрату 7x7 раз
                   ^
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:88:12: note: in expansion of macro ‘n’
     int sq[n][n]; // Создаем квадрат типа int размером 7x7 двумерным массивом
            ^
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:88:15: note: in expansion of macro ‘n’
     int sq[n][n]; // Создаем квадрат типа int размером 7x7 двумерным массивом
               ^
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:93:25: note: in expansion of macro ‘n’
     for (int i = 0; i < n; i++)
                         ^
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:95:29: note: in expansion of macro ‘n’
         for (int j = 0; j < n; j++)
                             ^
prog.cpp:97:13: error: ‘sq’ was not declared in this scope
             sq[i][j] = 0;
             ^~
prog.cpp:105:24: error: ‘sq’ was not declared in this scope
         solution(x, y, sq); //сразу же мы вызываем функцию magic и передаем в нее массив sq, переходи на 23 строку
                        ^~
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:116:25: note: in expansion of macro ‘n’
     for (int i = 0; i < n; i++)
                         ^
prog.cpp:31:11: error: expected primary-expression before ‘=’ token
 #define n = 7
           ^
prog.cpp:118:29: note: in expansion of macro ‘n’
         for (int j = 0; j < n; j++)
                             ^
prog.cpp:120:31: error: ‘sq’ was not declared in this scope
             cout << setw(4)<< sq[i][j];
                               ^~
stdout
Standard output is empty