Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Заполнение массива по спирали (http://www.tehnari.ru/f42/t81758/)

Dominus 07.12.2012 16:05

Заполнение массива по спирали
 
Вложений: 1
надо запомнить массив так
Вложение 109320
а у меня заполняется последовательно помогите решить
#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;
}

Vladimir_S 07.12.2012 20:55

Вложений: 1
Не знаю, будет ли Вам в том польза, но, поскольку я на СИ не программирую, написал на Паскале, но с максимальной "приближенностью" к сишным параметрам (нумерация массива с нуля, что мне непривычно, и т.п.). Посмотрите, может быть поможет:
Код:

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.



Часовой пояс GMT +4, время: 14:40.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.