Форум программистов, компьютерный форум CyberForum.ru

Вывод членов матрицы по спирали - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать собственный класс для ввода и вывода строки, подсчета количества символов в строке http://www.cyberforum.ru/cpp-beginners/thread1068191.html
как написать собственный с++ класс для ввода и вывода строки, подсчета количества символов в строке
C++ Сортировка включением блин не сильно розбираюсь на С++ нужна помощь http://www.cyberforum.ru/cpp-beginners/thread1068189.html
C++ Непросто написанный условный оператор
Привет! Есть задача по отображению количеству отрицательных чисел. Вот код: int main() { int f, s, t; int n = 0; cout << "Input three numbers: " << endl; cin >> f >> s >> t;
Маленькая конструкции с if else C++
Доброе время суток, товарищи! У меня возник вопрос, как мне в кострукции с if else сделать так, чтобы else были все другие слова, кроме тех, которые в if? #include <iostream> using namespace std; void question () { cout << "Мобила есть?\n"; } int main()
C++ структура точки в плоскости http://www.cyberforum.ru/cpp-beginners/thread1068151.html
создать структуру для работы с точками на плоскости. необходимо определить следующее 1)создать точку по координатам 2)вывод точки в виде "(х,у)" 3)найти расстояние между точками 4)найти площадь треугольника заданного тремя точками #include <iostream> #include <cmath> using namespace std; struct point
C++ Кодирование-декодирование изображений Нужна программа с++, которая кодирует изображение в изображение(и обратно), используя при этом 2 младших бита. Есть программа, которая (по идеи) использует 3 младших бита, но при проверке кодированного изображения получилось, что меняет она 4 бита. Кодирование #define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include <iostream> #include <stdio.h> #include <io.h> подробнее

Показать сообщение отдельно
gunslinger
случайный прохожий
 Аватар для gunslinger
1097 / 715 / 184
Регистрация: 20.07.2013
Сообщений: 1,970
13.01.2014, 23:30     Вывод членов матрицы по спирали
Учитель из меня не очень, но попробую объяснить.
i - строки, j - столбцы массива.
dir - направление движения. Если -1, то "идем" влево вверх (индексы массива одновременно уменьшаются на -1).
Если 1, то вправо вниз.
При достижении "края" (левой стороны j=0, i%2=0 - i четное или нижней - i = dim-1, j%2=1 - j нечетное) инкрементируем i либо декрементируем j, задавая направление движения (1 или -1).
Во всех случаях не забываем запоминать элементы массива (в строке).
Повторяем процесс, пока выполняется !(i == dim-1 && j == 0), что равнозначно
условию (i != dim-1 || j != 0), то есть останавливаемся при достижении левого нижнего угла.

Не работает для четной размерности массива.
Можно переделать (обобщить) для этого случая, что должно быть делом техники. Кто желает - пусть попрактикуется.
 
Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru