Ответы на вопрос:
#include "stdafx.h" #include "malloc .h" #include < iostream> using namespace std; int _tmain(int argc, _tchar* argv[]) { // вводим исходные данные. int m ; int n; printf ("введите количество столбцов? m = "); cin > > m; printf ("введите количество строк? n = "); cin > > n; // создаем матрицу. int* pmatrix = (int*) malloc (m * n * sizeof (int)); // инициализируем другие переменные. int xmin = 0, // левая граница спирали xmax = m, // правая граница спирали (не включая ее, поэтому ниже будет использоваться xmax - 1) ymin = 0, // верхняя граница спирали ymax = n, // нижняя граница спирали (не включая ее, поэтому ниже будет использоваться ymax - 1) i = 0, // текущее число x, y; // расходный материал. // бесконечный цикл, пока не заполним матрицу. while (1) { // заполняем верхний ряд слева направо. for (x = xmin; x < xmax; x++) pmatrix[x + ymin * m] = i++; // заполнили весь верхний ряд. подвигаем вниз верхнюю границу. ymin ++; // если верхняя граница совпала с нижней, то заканчиваем цикл. if (ymin == ymax) break; // заполняем правый ряд сверху вниз. for (y = ymin; y < ymax; y++) pmatrix[xmax - 1 + y * m] = i++; // заполнили весь правый ряд. подвигаем налево правую границу. xmax --; // если правая граница совпала с левой, то заканчиваем цикл. if (xmax == xmin) break; // заполняем нижний ряд справа налево. for (x = xmax - 1; x > = xmin; pmatrix[x + (ymax - 1) * m] = i++; // заполнили весь нижний ряд. подвигаем вверх нижнюю границу. ymax --; // если верхняя граница совпала с нижней, то заканчиваем цикл. if (ymin == ymax) break; // заполняем левый ряд снизу вверх. for (y = ymax - 1; y > = ymin; pmatrix[xmin + y * m] = i++; // заполнили весь левый ряд. подвигаем направо левую границу. xmin ++; // если правая граница совпала с левой, то заканчиваем цикл. if (xmax == xmin) break; // если мы все еще здесь, значит идем на очередной виток спирали.. } // есть предположение, что спираль заполнена. напечатаем ее, посмотреть.. for (y = 0; y < n; y++) { // печатаем строку. for (x = 0; x < m; x++) printf ("i, ", pmatrix[x + y * m]); // переходим на другую строку. printf ("\r\n"); } // освобождаем память и выходим. free (pmatrix); pmatrix = 0; }
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
MarinaSc120.12.2021 08:34
-
юля41711.04.2020 14:50
-
с1413а22.07.2021 04:08
-
gusarova1716.08.2021 23:13
-
какашка374813.10.2021 13:08
-
ileuova121.06.2020 23:48
-
AWIKOZA08.02.2021 15:29
-
AlinaAlina267201.03.2023 21:56
-
ladysachenko2016.12.2022 08:44
-
eviljew105.06.2022 22:25
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.