Заполнение матрицы змейкой - C (СИ)
Формулировка задачи:
Сколько мучался. Никак не могу понять как организовать заполнение массива таким образом.
Если кому нетрудно, хотя бы натолкните на мысль.
Решение задачи: «Заполнение матрицы змейкой»
textual
Листинг программы
#include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { int n; cout << endl << "N=? (from 2 to 100): "; cin >> n; int mas[100][100]; for (int i = 0; i < n; i++) { for (int j = n-1; j > -1; j--) { if ((i + j) < n) { mas[i][j] = 0.5 * (i + j + 1) * (i + j + 2) + ((i + j) % 2 == 0 ? -j : -i); } else { int p = n - i - 1, q = n - j - 1; mas[i][j] = n * n + 1 - (0.5 * (p + q + 1) * (p + q + 2) + ((p + q) % 2 == 0 ? -q : -p)); } cout << mas[i][j] << "\t"; } cout << endl; } _getch(); return 0; }
Объяснение кода листинга программы
- В начале программы пользователю предлагается ввести число N от 2 до 100, которое определяет размер матрицы.
- Затем определяется массив mas размером 100x100 для хранения заполненной матрицы.
- Далее происходит заполнение матрицы по определенному алгоритму:
- Внешний цикл for перебирает все строки матрицы от 0 до N-1.
- Внутренний цикл for перебирает все столбцы матрицы от N-1 до 0.
- Если сумма индексов текущей строки и столбца больше N-1, то значение элемента матрицы вычисляется как 0.5 (i + j + 1) (i + j + 2) + ((i + j) % 2 == 0 ? -j : -i).
- Если сумма индексов текущей строки и столбца равна N-1, то значение элемента матрицы вычисляется как nn+1 - (0.5 (p + q + 1) * (p + q + 2) + ((p + q) % 2 == 0 ? -q : -p)), где p = N-i-1, q = N-j-1.
- Значение элемента матрицы выводится на экран.
- После заполнения матрицы программа ожидает нажатия клавиши и завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д