|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
07.12.2012, 16:05 | #1 (permalink) |
Новичок
Регистрация: 06.12.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Заполнение массива по спирали
а у меня заполняется последовательно помогите решить #include <stdio.h> #define S 9 int Ar[S][S]; /* матрица */ int main(void) { short l, r; /* текущие индексы */ short r1,r2; /* граничные номера столбцов */ short dd; /* модификатор граничных номеров */ short k; /* текущий член ЛП */ /* начальные значения переменных */ r1=1; r2=S-1; dd=1; k=1; for (l=0; l<S; l++) { /* перебор строк */ for (r=0; r<S; r++) /* перебор столбцов */ /* условие ненулевого значения */ if ((r<r1)||(r>r2)) Ar[l][r]=1; else Ar[l][r]=k++; /* конец перебора строк */ /* модификация границ */ r1-=dd; r2+=dd; /* уловие перехода в нижнюю часть */ if (r1>r2) dd=-dd; } /* конец перебора столбцов */ /* вывод матрицы */ for (l=0; l<S; l++) { for (r=0; r<S; r++) { printf("%3d",Ar[l][r]); } printf("\n"); } return 0; } |
07.12.2012, 16:05 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Данные темы содержат похожую информацию Даны два массива по 15 элементов Создание, онлайн заполнение бланков заявлений |
07.12.2012, 20:55 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Не знаю, будет ли Вам в том польза, но, поскольку я на СИ не программирую, написал на Паскале, но с максимальной "приближенностью" к сишным параметрам (нумерация массива с нуля, что мне непривычно, и т.п.). Посмотрите, может быть поможет:
Код:
Var k,i,j,Ibeg,Ifin,Jbeg,Jfin:Byte; M:Array[0..8,0..8] of Byte; Begin Ibeg:=0; Jbeg:=0; Ifin:=0; Jfin:=0; k:=0; While k<81 do begin for j:=Jbeg to 8-Jfin do begin k:=k+1; M[Ibeg,j]:=k; end; Ibeg:=Ibeg+1; for i:=Ibeg to 8-Ifin do begin k:=k+1; M[i,8-Jfin]:=k; end; Jfin:=Jfin+1; for j:=8-Jfin downto Jbeg do begin k:=k+1; M[8-Ifin,j]:=k; end; Ifin:=Ifin+1; for i:=8-Ifin downto Ibeg do begin k:=k+1; M[i,Jbeg]:=k; end; Jbeg:=Jbeg+1; end; For i:=0 to 8 do begin For j:=0 to 8 do Write(M[i,j]:4); Writeln; end; Readln; End. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|