Вверх ↑
Ответов: 16884
Рейтинг: 1239
#1: 2013-04-08 22:36:21 ЛС | профиль | цитата
Вот примерно так :

#pas
var
x,y: array of integer;
a,z: array of string;
m,ring,k,rings:integer;

begin
read(rings);
FOR ring:=1 to rings do
BEGIN     // начало цикла FOR 
 k:=3*ring*ring-3*ring;
 m:=1;
 while (m/(6*ring))<=0.25 do
  begin   // начало цикла WHILE 
     a[k+m]:=z[k+m];          // Вот тут НЕ ВЕРЮ. Начало с a[2], а массив начинается с 0
     x[k+m]:=14+14*(ring-m);  // поэтому не верю и в твою математику
     y[k+3*ring+m]:=-y[k+m];
     x[k+3*ring+m]:=-x[k+m];
     a[k+3*ring+m]:=z[k+3*ring+m]; 
  if (m/(6*ring))<=(1/(ring+1)) then
       y[k+m]:=-15-24*ring
  else
    begin // начало IF false
       y[k+m]:=-15-24*(2*ring-m+1);
       y[k+3*ring-m]:=-y[k+m];
       x[k+3*ring-m]:=x[k+m];
       a[k+3*ring-m]:=z[k+3*ring-m];
        y[k+6*ring-m]:=y[k+m];
        x[k+6*ring-m]:=-x[k+m];
        a[k+6*ring-m]:=z[k+6*ring-m];
    end;  // конец IF false 
   inc(m);
 end;     // конец цикла WHILE 
END;      // конец цикла FOR 

end.
И не стесняйся писать комментарии - хоть не запутаешься.
И не забывай, что нумерация динамических массивов начинается с 0.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0