include <iostream> #include <cstdlib>//библиотека для ввода и вывода информации cin, cout #include <ctime>// время using namespace std;//взяли параметр std из библиотеки <cstdlib> struct arr { //объявли тип класса структ и имя класса арр int* mas; // указатель на начало массива * означает адрес ячейки памяти int n; //количество строк int m; //количество столбцов void InitMas(int k1, int k2) //функция инициализации - выделения динамической памяти //под массив {// открывающая фигурная скобка if ((k1 > 0)& (k2 > 0)) //проверяем корректность ввода количества строк и столбцов { //открывающая фигурная скобка по команде иф n = k1;//количество строк массива m = k2;//количество столбцов массива mas = new int[n * m]; //резервируется n*m ячеек с целыми числами для переменной mas } //закрывающая фигурная скобка по команде иф else //этот код будет выполнен, если иф - ложь { //открывающая фигурная скобка по команде елсе }//закрывающая фигурная скобка по команде елсе } // закрывает процедуру Инит Мас void DelMas() //функция уничтожения массива { n = 0; // количество строк = 0 m = 0;// количество столбцов = 0 delete[]mas; //освобождение памяти от массива } void ReadMas() //процедура ввода массива { srand(time(NULL));//привязываем генератор случайных чисел ко времени cout << "Ввод массива\n"; //выводит указанный текст for (int i = 0; i < n; i++) //обход по строкам for (int j = 0; j < m; j++) //обход по элементам в и-ой строке {//фигурные скобки для выполнения нескольких команд в цикле фор //cin >> mas[i*m+j];//ввод элемента с клавиатуры (в данный момент не используется) //mas[i * m + j] = rand() % 2+1;//заполняем элементы массива случайными числами 1 или 2 (0 или 1 и + 1) //mas[i * m + j] = 2; //i,j - номер элемента в таблице, i * m + j - номер элемента в списке //i * m + j ---- прошли m элементов i раз (i строк) //и j элементов в i-ой строке //--- всего i * m + j элементов mas[i * m + j] = 0; } //for (int i = 0; i < n; i++) //for (int j = 0; j < m; j++) //{ //cout << mas[i, j]; //cout << " "; //} } //завершает процедуру ввода массива void ReadEl(int i, int j, int x)//процедура записи элемента х в массив, стоящего на месте i,j в таблице {//открывает процедуру mas[i * m + j] = x;//запись элемента х в массив, стоящего на месте i,j в таблице }//закрывает процедуру int rl(int i, int j)//процедура записи элемента х в массив, стоящего на месте i,j в таблице {//открывает процедуру return mas[i * m + j]; }//закрывает процедуру void WriteMas() //процедура вывода элементов массива на экран { cout << "Вывод массива\n";//выводит соответствующий текст, \n - переход на новую строку после текста for (int i = 0; i < n; i++)//обход по строкам таблицы {//окрывает первый фор for (int j = 0; j < m; j++)//обход по элементам в и-ой строке {//окрывает второй фор, нужно, если команд в цикле фор больше 1 cout << mas[i * m + j];//вывод элемента на месте i,j в таблице cout << " ";//вставляет пробел }//закрывает второй фор cout << '\n';//переход на новую строку }//закрывает первый фор cout << '\n'; //переход на новую строку }//завершение процедуры }; int Masx(arr m, int i, int j) //функция получения элемента //int --- тип значения функции Masx --- имя функции(любое) //(arr m, int i, int j) --- аргументы функции и их типы {//открывает функцию int x;//локальная переменная и ее тип, используется только внутри функции x = m.mas[m.m * i + j]; //m.mas[m.m*i+j]: //m - объект, который пришел в функцию //m.mas - поле мас объекта м //m.m - поле м объекта м = количество столбцов в массиве м //m.m*i+j - номер ячейки из всех ячеек, зарезервированных для мас //x = m.mas[m.m*i+j] - в х записывавем число из ячейки с номером m.m*i+j у объекта м return x;//переменная, которую будет возвращать функция при ее вызове }//завершает функцию int check_legacy(arr m) //функция проверки поля { int x, y; x = (Masx(m, 0, 0) * Masx(m, 0, 1) * Masx(m, 0, 2) - 1) * (Masx(m, 1, 0) * Masx(m, 1, 1) * Masx(m, 1, 2) - 1) * (Masx(m, 2, 0) * Masx(m, 2, 1) * Masx(m, 2, 2) - 1) * (Masx(m, 0, 0) * Masx(m, 1, 0) * Masx(m, 2, 0) - 1) * (Masx(m, 0, 1) * Masx(m, 1, 1) * Masx(m, 2, 1) - 1) * (Masx(m, 0, 2) * Masx(m, 1, 2) * Masx(m, 2, 2) - 1) * (Masx(m, 0, 0) * Masx(m, 1, 1) * Masx(m, 2, 2) - 1) * (Masx(m, 2, 0) * Masx(m, 1, 1) * Masx(m, 0, 2) - 1); y = (Masx(m, 0, 0) + Masx(m, 0, 1) + Masx(m, 0, 2) - 6) * (Masx(m, 1, 0) + Masx(m, 1, 1) + Masx(m, 1, 2) - 6) * (Masx(m, 2, 0) + Masx(m, 2, 1) + Masx(m, 2, 2) - 6) * (Masx(m, 0, 0) + Masx(m, 1, 0) + Masx(m, 2, 0) - 6) * (Masx(m, 0, 1) + Masx(m, 1, 1) + Masx(m, 2, 1) - 6) * (Masx(m, 0, 2) + Masx(m, 1, 2) + Masx(m, 2, 2) - 6) * (Masx(m, 0, 0) + Masx(m, 1, 1) + Masx(m, 2, 2) - 6) * (Masx(m, 2, 0) + Masx(m, 1, 1) + Masx(m, 0, 2) - 6); return x * y; } int check(arr m, int k) //функция проверки поля { int x1 = 1; int y1 = 0; int x2 = 1; int y2 = 0; int x3 = 1; int y3 = 0; int x4 = 1; int y4 = 0; int i = 0; int j = 0; int e = 0; int t = -1; for (i = 0; i < m.n; i++) for (j = 0; j < m.m; j++) { t = 1; x1 = 1; y1 = 0; x2 = 1; y2 = 0; x3 = 1; y3 = 0; x4 = 1; y4 = 0; for (e = 0; e < k; e++) { if (j + e < m.m) { x1 = x1 * m.rl(i, j + e); y1 = y1 + m.rl(i, j + e); } if (i + e < m.n && j + e < m.m) { x2 = x2 * m.rl(i + e, j + e); y2 = y2 + m.rl(i + e, j + e); } if (i + e < m.n) { x3 = x3 * m.rl(i + e, j); y3 = y3 + m.rl(i + e, j); } if (i - e >= 0 && j + e < m.m) { x4 = x4 * m.rl(i - e, j + e); y4 = y4 + m.rl(i - e, j + e); } } if (x1 == 1 && y1 == k) return 0; if (y1 == 2 * k) return 0; if (x2 == 1 && y2 == k) return 0; if (y2 == 2 * k) return 0; if (x3 == 1 && y3 == k) return 0; if (y3 == 2 * k) return 0; if (x4 == 1 && y4 == k) return 0; if (y4 == 2 * k) return 0; } return t; } int checkd(arr m, int k, int k1) //функция проверки поля { int x = -1; for (int i = 0; i < m.m; i++)//обход по строкам таблицы {//окрывает первый фор for (int j = 0; j < m.m; j++)//обход по элементам в и-ой строке {//окрывает второй фор, нужно, если команд в цикле фор больше 1 if (m.mas[i * m.m + j] == 0) { m.ReadEl(i, j, k); if (check(m, k1) == 0) x = i * m.m + j; m.ReadEl(i, j, 0); } }//закрывает второй фор }//закрывает первый фор return(x); } int fcheck(arr m, int k) { int x1 = 1; int y1 = 0; int z1 = 0; int x2 = 1; int y2 = 0; int z2 = 0; int x3 = 1; int y3 = 0; int z3 = 0; int x4 = 1; int y4 = 0; int z4 = 0; int i = 0; int j = 0; int e = 0; int t = 0; for (i = 0; i < m.n; i++) for (j = 0; j < m.m; j++) { x1 = 1; y1 = 0; z1 = 0; x2 = 1; y2 = 0; z2 = 0; x3 = 1; y3 = 0; z3 = 0; x4 = 1; y4 = 0; z4 = 0; for (e = 0; e < k; e++) { if (j + e < m.m) { if (m.rl(i, j + e) != 0) x1 = x1 * m.rl(i, j + e); y1 = y1 + m.rl(i, j + e); z1++; } if (i + e < m.n && j + e < m.m) { if (m.rl(i + e, j + e) != 0) x2 = x2 * m.rl(i + e, j + e); y2 = y2 + m.rl(i + e, j + e); z2++; } if (i + e < m.n) { if (m.rl(i + e, j) != 0) x3 = x3 * m.rl(i + e, j); y3 = y3 + m.rl(i + e, j); z3++; } if (i - e >= 0 && j + e < m.m) { if (m.rl(i - e, j + e) != 0) x4 = x4 * m.rl(i - e, j + e); y4 = y4 + m.rl(i - e, j + e); z4++; } } //if (x1==1 && y1==k) return 0; //if (y1==2*k) return 0; //if (x2==1 && y2==k) return 0; //if (y2==2*k) return 0; //if (x3==1 && y3==k) return 0; //if (y3==2*k) return 0; //if (x4==1 && y4==k) return 0; //if (y4==2*k) return 0; if (y1 == 2 && x1 == 2 && z1 == k) t = t + 1; if (y2 == 2 && x2 == 2 && z2 == k) t = t + 1; if (y3 == 2 && x3 == 2 && z3 == k) t = t + 1; if (y4 == 2 && x4 == 2 && z4 == k) t = t + 1; } return t; } int main()//функция - точка входа - выполняется автоматически при запуске программы {//открывает главную процедуру маин setlocale(0, "russian");//разрешили русский язык cout << "Hello World!\n";//вывод текста arr m;//объявили переменну м как объект арр int kk = 5; m.InitMas(15, 15);//вызываем процедуру InitMas(3,3) для объекта м //создает массив укаханных размеров m.ReadMas(); // вызываем процедуру ReadMas() для объекта м //считывание массива с клавиатуры или его заполнение другим способом m.WriteMas(); // вызываем процедуру WriteMas() для объекта м //m.ReadEl(1,1,1);//запись указанного элемента на указанное место в массиве //m.WriteMas(); bool Player = 0; int i = 0; int j = 0; int k = 0; int tp = 0; //cout << check(m,kk); while ((check(m, kk) != 0) && (k < m.n * m.m)) { cin >> i; cin >> j; m.ReadEl(i - 1, j - 1, 2); system("clear"); m.WriteMas(); cout << '\n'; cout << fcheck(m, kk); cout << '\n'; k = k + 1; } cout << "линия найдена или закончилось поле"; //cout << check(m);//вывод значения функции check(m) m.DelMas();//освобождает пaмять, зарезервированную ранее для объекта м return 0; }
Fender_inactive2697143, я конечно не SkxlxrD, но вот тоже самое кодом #include <iostream> #include <cstdlib>//библиотека для ввода и вывода информации cin, cout #include <ctime>// время using namespace std;//взяли параметр std из библиотеки <cstdlib> struct arr { //объявли тип класса структ и имя класса арр int* mas; // указатель на начало массива * означает адрес ячейки памяти int n; //количество строк int m; //количество столбцов void InitMas(int k1, int k2) //функция инициализации - выделения динамической памяти //под массив {// открывающая фигурная скобка if ((k1 > 0) & (k2 > 0)) //проверяем корректность ввода количества строк и столбцов { //открывающая фигурная скобка по команде иф n = k1;//количество строк массива m = k2;//количество столбцов массива mas = new int[n * m]; //резервируется n*m ячеек с целыми числами для переменной mas } //закрывающая фигурная скобка по команде иф else //этот код будет выполнен, если иф - ложь { //открывающая фигурная скобка по команде елсе }//закрывающая фигурная скобка по команде елсе } // закрывает процедуру Инит Мас void DelMas() //функция уничтожения массива { n = 0; // количество строк = 0 m = 0;// количество столбцов = 0 delete[]mas; //освобождение памяти от массива } void ReadMas() //процедура ввода массива { srand(time(NULL));//привязываем генератор случайных чисел ко времени cout << "Ввод массива\n"; //выводит указанный текст for (int i = 0; i < n; i++) //обход по строкам for (int j = 0; j < m; j++) //обход по элементам в и-ой строке {//фигурные скобки для выполнения нескольких команд в цикле фор //cin >> mas[i*m+j];//ввод элемента с клавиатуры (в данный момент не используется) //mas[i * m + j] = rand() % 2+1;//заполняем элементы массива случайными числами 1 или 2 (0 или 1 и + 1) //mas[i * m + j] = 2; //i,j - номер элемента в таблице, i * m + j - номер элемента в списке //i * m + j ---- прошли m элементов i раз (i строк) //и j элементов в i-ой строке //--- всего i * m + j элементов mas[i * m + j] = 0; } //for (int i = 0; i < n; i++) //for (int j = 0; j < m; j++) //{ //cout << mas[i, j]; //cout << " "; //} } //завершает процедуру ввода массива void ReadEl(int i, int j, int x)//процедура записи элемента х в массив, стоящего на месте i,j в таблице {//открывает процедуру mas[i * m + j] = x;//запись элемента х в массив, стоящего на месте i,j в таблице }//закрывает процедуру int rl(int i, int j)//процедура записи элемента х в массив, стоящего на месте i,j в таблице {//открывает процедуру return mas[i * m + j]; }//закрывает процедуру void WriteMas() //процедура вывода элементов массива на экран { cout << "Вывод массива\n";//выводит соответствующий текст, \n - переход на новую строку после текста for (int i = 0; i < n; i++)//обход по строкам таблицы {//окрывает первый фор for (int j = 0; j < m; j++)//обход по элементам в и-ой строке {//окрывает второй фор, нужно, если команд в цикле фор больше 1 cout << mas[i * m + j];//вывод элемента на месте i,j в таблице cout << " ";//вставляет пробел }//закрывает второй фор cout << '\n';//переход на новую строку }//закрывает первый фор cout << '\n'; //переход на новую строку }//завершение процедуры }; int Masx(arr m, int i, int j) //функция получения элемента //int --- тип значения функции Masx --- имя функции(любое) //(arr m, int i, int j) --- аргументы функции и их типы {//открывает функцию int x;//локальная переменная и ее тип, используется только внутри функции x = m.mas[m.m * i + j]; //m.mas[m.m*i+j]: //m - объект, который пришел в функцию //m.mas - поле мас объекта м //m.m - поле м объекта м = количество столбцов в массиве м //m.m*i+j - номер ячейки из всех ячеек, зарезервированных для мас //x = m.mas[m.m*i+j] - в х записывавем число из ячейки с номером m.m*i+j у объекта м return x;//переменная, которую будет возвращать функция при ее вызове }//завершает функцию int check_legacy(arr m) //функция проверки поля { int x, y; x = (Masx(m, 0, 0) * Masx(m, 0, 1) * Masx(m, 0, 2) - 1) * (Masx(m, 1, 0) * Masx(m, 1, 1) * Masx(m, 1, 2) - 1) * (Masx(m, 2, 0) * Masx(m, 2, 1) * Masx(m, 2, 2) - 1) * (Masx(m, 0, 0) * Masx(m, 1, 0) * Masx(m, 2, 0) - 1) * (Masx(m, 0, 1) * Masx(m, 1, 1) * Masx(m, 2, 1) - 1) * (Masx(m, 0, 2) * Masx(m, 1, 2) * Masx(m, 2, 2) - 1) * (Masx(m, 0, 0) * Masx(m, 1, 1) * Masx(m, 2, 2) - 1) * (Masx(m, 2, 0) * Masx(m, 1, 1) * Masx(m, 0, 2) - 1); y = (Masx(m, 0, 0) + Masx(m, 0, 1) + Masx(m, 0, 2) - 6) * (Masx(m, 1, 0) + Masx(m, 1, 1) + Masx(m, 1, 2) - 6) * (Masx(m, 2, 0) + Masx(m, 2, 1) + Masx(m, 2, 2) - 6) * (Masx(m, 0, 0) + Masx(m, 1, 0) + Masx(m, 2, 0) - 6) * (Masx(m, 0, 1) + Masx(m, 1, 1) + Masx(m, 2, 1) - 6) * (Masx(m, 0, 2) + Masx(m, 1, 2) + Masx(m, 2, 2) - 6) * (Masx(m, 0, 0) + Masx(m, 1, 1) + Masx(m, 2, 2) - 6) * (Masx(m, 2, 0) + Masx(m, 1, 1) + Masx(m, 0, 2) - 6); return x * y; } int check(arr m, int k) //функция проверки поля { int x1 = 1; int y1 = 0; int x2 = 1; int y2 = 0; int x3 = 1; int y3 = 0; int x4 = 1; int y4 = 0; int i = 0; int j = 0; int e = 0; int t = -1; for (i = 0; i < m.n; i++) for (j = 0; j < m.m; j++) { t = 1; x1 = 1; y1 = 0; x2 = 1; y2 = 0; x3 = 1; y3 = 0; x4 = 1; y4 = 0; for (e = 0; e < k; e++) { if (j + e < m.m) { x1 = x1 * m.rl(i, j + e); y1 = y1 + m.rl(i, j + e); } if (i + e < m.n && j + e < m.m) { x2 = x2 * m.rl(i + e, j + e); y2 = y2 + m.rl(i + e, j + e); } if (i + e < m.n) { x3 = x3 * m.rl(i + e, j); y3 = y3 + m.rl(i + e, j); } if (i - e >= 0 && j + e < m.m) { x4 = x4 * m.rl(i - e, j + e); y4 = y4 + m.rl(i - e, j + e); } } if (x1 == 1 && y1 == k) return 0; if (y1 == 2 * k) return 0; if (x2 == 1 && y2 == k) return 0; if (y2 == 2 * k) return 0; if (x3 == 1 && y3 == k) return 0; if (y3 == 2 * k) return 0; if (x4 == 1 && y4 == k) return 0; if (y4 == 2 * k) return 0; } return t; } int checkd(arr m, int k, int k1) //функция проверки поля { int x = -1; for (int i = 0; i < m.m; i++)//обход по строкам таблицы {//окрывает первый фор for (int j = 0; j < m.m; j++)//обход по элементам в и-ой строке {//окрывает второй фор, нужно, если команд в цикле фор больше 1 if (m.mas[i * m.m + j] == 0) { m.ReadEl(i, j, k); if (check(m, k1) == 0) x = i * m.m + j; m.ReadEl(i, j, 0); } }//закрывает второй фор }//закрывает первый фор return(x); } int fcheck(arr m, int k) { int x1 = 1; int y1 = 0; int z1 = 0; int x2 = 1; int y2 = 0; int z2 = 0; int x3 = 1; int y3 = 0; int z3 = 0; int x4 = 1; int y4 = 0; int z4 = 0; int i = 0; int j = 0; int e = 0; int t = 0; for (i = 0; i < m.n; i++) for (j = 0; j < m.m; j++) { x1 = 1; y1 = 0; z1 = 0; x2 = 1; y2 = 0; z2 = 0; x3 = 1; y3 = 0; z3 = 0; x4 = 1; y4 = 0; z4 = 0; for (e = 0; e < k; e++) { if (j + e < m.m) { if (m.rl(i, j + e) != 0) x1 = x1 * m.rl(i, j + e); y1 = y1 + m.rl(i, j + e); z1++; } if (i + e < m.n && j + e < m.m) { if (m.rl(i + e, j + e) != 0) x2 = x2 * m.rl(i + e, j + e); y2 = y2 + m.rl(i + e, j + e); z2++; } if (i + e < m.n) { if (m.rl(i + e, j) != 0) x3 = x3 * m.rl(i + e, j); y3 = y3 + m.rl(i + e, j); z3++; } if (i - e >= 0 && j + e < m.m) { if (m.rl(i - e, j + e) != 0) x4 = x4 * m.rl(i - e, j + e); y4 = y4 + m.rl(i - e, j + e); z4++; } } //if (x1==1 && y1==k) return 0; //if (y1==2*k) return 0; //if (x2==1 && y2==k) return 0; //if (y2==2*k) return 0; //if (x3==1 && y3==k) return 0; //if (y3==2*k) return 0; //if (x4==1 && y4==k) return 0; //if (y4==2*k) return 0; if (y1 == 2 && x1 == 2 && z1 == k) t = t + 1; if (y2 == 2 && x2 == 2 && z2 == k) t = t + 1; if (y3 == 2 && x3 == 2 && z3 == k) t = t + 1; if (y4 == 2 && x4 == 2 && z4 == k) t = t + 1; } return t; } int main()//функция - точка входа - выполняется автоматически при запуске программы {//открывает главную процедуру маин setlocale(0, "russian");//разрешили русский язык cout << "Hello World!\n";//вывод текста arr m;//объявили переменну м как объект арр int kk = 5; m.InitMas(15, 15);//вызываем процедуру InitMas(3,3) для объекта м //создает массив укаханных Code #include <iostream> #include <cstdlib>//библиотека для ввода и вывода информации cin, cout #include <ctime>// время using namespace std;//взяли параметр std из библиотеки <cstdlib> struct arr { //объявли тип класса структ и имя класса арр int* mas; // указатель на начало массива * означает адрес ячейки памяти int n; //количество строк int m; //количество столбцов void InitMas(int k1, int k2) //функция инициализации - выделения динамической памяти //под массив {// открывающая фигурная скобка if ((k1 > 0) & (k2 > 0)) //проверяем корректность ввода количества строк и столбцов { //открывающая фигурная скобка по команде иф n = k1;//количество строк массива m = k2;//количество столбцов массива mas = new int[n * m]; //резервируется n*m ячеек с целыми числами для переменной mas } //закрывающая фигурная скобка по команде иф else //этот код будет выполнен, если иф - ложь { //открывающая фигурная скобка по команде елсе }//закрывающая фигурная скобка по команде елсе } // закрывает процедуру Инит Мас void DelMas() //функция уничтожения массива { n = 0; // количество строк = 0 m = 0;// количество столбцов = 0 delete[]mas; //освобождение памяти от массива } void ReadMas() //процедура ввода массива { srand(time(NULL));//привязываем генератор случайных чисел ко времени cout << "Ввод массива\n"; //выводит указанный текст for (int i = 0; i < n; i++) //обход по строкам for (int j = 0; j < m; j++) //обход по элементам в и-ой строке {//фигурные скобки для выполнения нескольких команд в цикле фор //cin >> mas[i*m+j];//ввод элемента с клавиатуры (в данный момент не используется) //mas[i * m + j] = rand() % 2+1;//заполняем элементы массива случайными числами 1 или 2 (0 или 1 и + 1) //mas[i * m + j] = 2; //i,j - номер элемента в таблице, i * m + j - номер элемента в списке //i * m + j ---- прошли m элементов i раз (i строк) //и j элементов в i-ой строке //--- всего i * m + j элементов mas[i * m + j] = 0; } //for (int i = 0; i < n; i++) //for (int j = 0; j < m; j++) //{ //cout << mas[i, j]; //cout << " "; //} } //завершает процедуру ввода массива void ReadEl(int i, int j, int x)//процедура записи элемента х в массив, стоящего на месте i,j в таблице {//открывает процедуру mas[i * m + j] = x;//запись элемента х в массив, стоящего на месте i,j в таблице }//закрывает процедуру int rl(int i, int j)//процедура записи элемента х в массив, стоящего на месте i,j в таблице {//открывает процедуру return mas[i * m + j]; }//закрывает процедуру void WriteMas() //процедура вывода элементов массива на экран { cout << "Вывод массива\n";//выводит соответствующий текст, \n - переход на новую строку после текста for (int i = 0; i < n; i++)//обход по строкам таблицы {//окрывает первый фор for (int j = 0; j < m; j++)//обход по элементам в и-ой строке {//окрывает второй фор, нужно, если команд в цикле фор больше 1 cout << mas[i * m + j];//вывод элемента на месте i,j в таблице cout << " ";//вставляет пробел }//закрывает второй фор cout << '\n';//переход на новую строку }//закрывает первый фор cout << '\n'; //переход на новую строку }//завершение процедуры }; int Masx(arr m, int i, int j) //функция получения элемента //int --- тип значения функции Masx --- имя функции(любое) //(arr m, int i, int j) --- аргументы функции и их типы {//открывает функцию int x;//локальная переменная и ее тип, используется только внутри функции x = m.mas[m.m * i + j]; //m.mas[m.m*i+j]: //m - объект, который пришел в функцию //m.mas - поле мас объекта м //m.m - поле м объекта м = количество столбцов в массиве м //m.m*i+j - номер ячейки из всех ячеек, зарезервированных для мас //x = m.mas[m.m*i+j] - в х записывавем число из ячейки с номером m.m*i+j у объекта м return x;//переменная, которую будет возвращать функция при ее вызове }//завершает функцию int check_legacy(arr m) //функция проверки поля { int x, y; x = (Masx(m, 0, 0) * Masx(m, 0, 1) * Masx(m, 0, 2) - 1) * (Masx(m, 1, 0) * Masx(m, 1, 1) * Masx(m, 1, 2) - 1) * (Masx(m, 2, 0) * Masx(m, 2, 1) * Masx(m, 2, 2) - 1) * (Masx(m, 0, 0) * Masx(m, 1, 0) * Masx(m, 2, 0) - 1) * (Masx(m, 0, 1) * Masx(m, 1, 1) * Masx(m, 2, 1) - 1) * (Masx(m, 0, 2) * Masx(m, 1, 2) * Masx(m, 2, 2) - 1) * (Masx(m, 0, 0) * Masx(m, 1, 1) * Masx(m, 2, 2) - 1) * (Masx(m, 2, 0) * Masx(m, 1, 1) * Masx(m, 0, 2) - 1); y = (Masx(m, 0, 0) + Masx(m, 0, 1) + Masx(m, 0, 2) - 6) * (Masx(m, 1, 0) + Masx(m, 1, 1) + Masx(m, 1, 2) - 6) * (Masx(m, 2, 0) + Masx(m, 2, 1) + Masx(m, 2, 2) - 6) * (Masx(m, 0, 0) + Masx(m, 1, 0) + Masx(m, 2, 0) - 6) * (Masx(m, 0, 1) + Masx(m, 1, 1) + Masx(m, 2, 1) - 6) * (Masx(m, 0, 2) + Masx(m, 1, 2) + Masx(m, 2, 2) - 6) * (Masx(m, 0, 0) + Masx(m, 1, 1) + Masx(m, 2, 2) - 6) * (Masx(m, 2, 0) + Masx(m, 1, 1) + Masx(m, 0, 2) - 6); return x * y; } int check(arr m, int k) //функция проверки поля { int x1 = 1; int y1 = 0; int x2 = 1; int y2 = 0; int x3 = 1; int y3 = 0; int x4 = 1; int y4 = 0; int i = 0; int j = 0; int e = 0; int t = -1; for (i = 0; i < m.n; i++) for (j = 0; j < m.m; j++) { t = 1; x1 = 1; y1 = 0; x2 = 1; y2 = 0; x3 = 1; y3 = 0; x4 = 1; y4 = 0; for (e = 0; e < k; e++) { if (j + e < m.m) { x1 = x1 * m.rl(i, j + e); y1 = y1 + m.rl(i, j + e); } if (i + e < m.n && j + e < m.m) { x2 = x2 * m.rl(i + e, j + e); y2 = y2 + m.rl(i + e, j + e); } if (i + e < m.n) { x3 = x3 * m.rl(i + e, j); y3 = y3 + m.rl(i + e, j); } if (i - e >= 0 && j + e < m.m) { x4 = x4 * m.rl(i - e, j + e); y4 = y4 + m.rl(i - e, j + e); } } if (x1 == 1 && y1 == k) return 0; if (y1 == 2 * k) return 0; if (x2 == 1 && y2 == k) return 0; if (y2 == 2 * k) return 0; if (x3 == 1 && y3 == k) return 0; if (y3 == 2 * k) return 0; if (x4 == 1 && y4 == k) return 0; if (y4 == 2 * k) return 0; } return t; } int checkd(arr m, int k, int k1) //функция проверки поля { int x = -1; for (int i = 0; i < m.m; i++)//обход по строкам таблицы {//окрывает первый фор for (int j = 0; j < m.m; j++)//обход по элементам в и-ой строке {//окрывает второй фор, нужно, если команд в цикле фор больше 1 if (m.mas[i * m.m + j] == 0) { m.ReadEl(i, j, k); if (check(m, k1) == 0) x = i * m.m + j; m.ReadEl(i, j, 0); } }//закрывает второй фор }//закрывает первый фор return(x); } int fcheck(arr m, int k) { int x1 = 1; int y1 = 0; int z1 = 0; int x2 = 1; int y2 = 0; int z2 = 0; int x3 = 1; int y3 = 0; int z3 = 0; int x4 = 1; int y4 = 0; int z4 = 0; int i = 0; int j = 0; int e = 0; int t = 0; for (i = 0; i < m.n; i++) for (j = 0; j < m.m; j++) { x1 = 1; y1 = 0; z1 = 0; x2 = 1; y2 = 0; z2 = 0; x3 = 1; y3 = 0; z3 = 0; x4 = 1; y4 = 0; z4 = 0; for (e = 0; e < k; e++) { if (j + e < m.m) { if (m.rl(i, j + e) != 0) x1 = x1 * m.rl(i, j + e); y1 = y1 + m.rl(i, j + e); z1++; } if (i + e < m.n && j + e < m.m) { if (m.rl(i + e, j + e) != 0) x2 = x2 * m.rl(i + e, j + e); y2 = y2 + m.rl(i + e, j + e); z2++; } if (i + e < m.n) { if (m.rl(i + e, j) != 0) x3 = x3 * m.rl(i + e, j); y3 = y3 + m.rl(i + e, j); z3++; } if (i - e >= 0 && j + e < m.m) { if (m.rl(i - e, j + e) != 0) x4 = x4 * m.rl(i - e, j + e); y4 = y4 + m.rl(i - e, j + e); z4++; } } //if (x1==1 && y1==k) return 0; //if (y1==2*k) return 0; //if (x2==1 && y2==k) return 0; //if (y2==2*k) return 0; //if (x3==1 && y3==k) return 0; //if (y3==2*k) return 0; //if (x4==1 && y4==k) return 0; //if (y4==2*k) return 0; if (y1 == 2 && x1 == 2 && z1 == k) t = t + 1; if (y2 == 2 && x2 == 2 && z2 == k) t = t + 1; if (y3 == 2 && x3 == 2 && z3 == k) t = t + 1; if (y4 == 2 && x4 == 2 && z4 == k) t = t + 1; } return t; } int main()//функция - точка входа - выполняется автоматически при запуске программы {//открывает главную процедуру маин setlocale(0, "russian");//разрешили русский язык cout << "Hello World!\n";//вывод текста arr m;//объявили переменну м как объект арр int kk = 5; m.InitMas(15, 15);//вызываем процедуру InitMas(3,3) для объекта м //создает массив укаханных
Пиздец, а не код Тупо все программы, которые стоит писать по началу(массив, hello world, циклы и тд) он засунул в одно, ебануться можно
SkxlxrD, нуууу int e = 0; это создание целочисленной переменной е, и ее инициализация значением 0, а int checkd это объявление функции, которая называется ckeckd и возвращает целое число The post was merged to previous Feb 15, 2020 Прочитал первые комментарии в коде, using namespace std это не "взятие из библиотеки параметра std", кто вообще придумал эту шизофазию, struct arr это объявление класса а не структуры, а } // Фигурная скобка Это вообще вышка