Помощь - Поиск - Пользователи - Календарь
Полная версия: Заполнение слоев в матрице
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Shashlyk
Назовем 1-слоем (целочисленного) двумерного массива размером n × m элементы,
составляющие (последовательно) его первую строку, крайний правый столбец,
последнюю строку, крайний левый столбец. Назовем 2-слоем массива 1-слой
подмассива, получающегося в результате удаления 1-слоя из исходного массива.
Аналогичным образом определим 3-слой, 4-слой, …, k-слой (k <= min (n/2, m/2)). Помогите Пожалуйста написать программу, которая будет в массиве, имеющем p слоев, заполнять все элементы 1-слоя числом 1, 2-слоя – числом 2 и т.д.
Мой код:
k = k / 2;     // количество слоев
while(k > 0) { // цикл с уменьшением числа слоев
for(int i=1; i <= k; i++) { // {цикл по слоям, от внешнего к внутреннему

for(int j=i; j <= n-i; j++) array[j-1][i-1] = ...
for(int j=i; j <= m-i; j++) array[n-i][j-1] = ...
for(int j=n-i; j >= i; j--) array[j][m-i]= ...
for(int j=m-i; j >= i+1; j--) array[i-1][j]= ...

}
k --;
}
IUnknown
И что? Я тебе на Sources.Ru показывал, как слои поворачивать, здесь надо только заполнить:
            int k = (n < m) ? n : m;
k = k / 2;
while(k > 0) {
for(int i=1; i <= k; i++) {
for(int j=i; j <= n-i; j++) a[j-1][i-1] = k;
for(int j=i; j <= m-i; j++) a[n-i+1-1][j-1] = k;
for(int j=n-i; j >= i; j--) a[j+1-1][m-i+1-1]= k;
for(int j=m-i; j >= i+1; j--) a[i-1][j+1-1]= k;
a[i-1][i+1-1]= k;
}
k -= 1;
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.