Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2009, 18:22   #1
Злая белка
 
Регистрация: 13.01.2009
Сообщений: 3
Восклицание Вывод массива улиткой по возрастанию 7 на 8

1 2 3 4 5 6 7
26 27 28 29 30 31 8
25 44 45 46 47 32 9
24 43 54 55 48 33 10
23 42 53 56 49 34 11
22 41 52 51 50 35 12
21 40 39 38 37 36 13
20 19 18 17 16 15 14

Помогите составить программу пожалуйста
Злая белка вне форума Ответить с цитированием
Старый 13.01.2009, 19:05   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
uses crt;
const m=7; n=8;
var
a : array[1..m,1..n] of integer;
i,j,maxi,mini,minj,maxj,kk : integer;

begin
clrscr;
minj := 1;
maxj := n;
kk := 1;
mini := 1;
maxi := m;
repeat
 for j:=minj to maxj-1 do
  begin
   a[mini,j] := kk;
   inc(kk);
  end;
  inc(j);
 for i:= mini to maxi-1 do
  begin
   a[i,maxj] := kk;
   inc(kk);
  end;
  inc(i);
 for j:= maxj downto minj+1 do
  begin
   a[maxi,j] := kk;
   inc(kk);
  end;
 for i:= maxi downto mini+1 do
  begin
   a[i,minj] := kk;
   inc(kk);
  end;
 inc(mini);
 inc(minj);
 dec(maxi);
 dec(maxj);
until kk>=m*n;

for i:=1 to m do
 begin
 for j:=1 to n do
  write(a[i,j]:3);
 writeln;
 end;


readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.01.2009, 19:05   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
type
  TMatrix = array[1..n,1..m] of integer;

{заполнение матрицы по спирали
n - количество строк, m - количество столбцов}
procedure SnailMatrix(const n,m: integer; var a: TMatrix);
var
  i,j,k,z: integer;
begin
  i:=1; j:=1; k:=0;
  if m = 1 then k:=1;
  for z:=1 to n*m do
    begin
      a[i,j]:=z;
      case k mod 4 of
      0: begin
           j:=j+1;
           if j = (m-i+1) then k:=k+1;
         end;
      1: begin
           i:=i+1;
           if (n-i) = (m-j) then k:=k+1;
         end;
      2: begin
           j:=j-1;
           if (n-i+1) = j then k:=k+1;
         end;
      3: begin
           i:=i-1;
           if (i-1) = j then k:=k+1;
         end;
      end;
    end;
end;
------------------------
Ха-ха, одновременно ответили
_Dmitry вне форума Ответить с цитированием
Старый 13.01.2009, 19:14   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

_Dmitry Интересно у вас сделано )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.01.2009, 21:29   #5
Злая белка
 
Регистрация: 13.01.2009
Сообщений: 3
По умолчанию

Sazary спасибо большое ваша прога работает норм, а вот _Dmitry ваша прога не работает выдает ошибку неизвестный идентификатор n но все равно спасибо)))))
Злая белка вне форума Ответить с цитированием
Старый 13.01.2009, 21:52   #6
Google[Bot]
Пользователь
 
Аватар для Google[Bot]
 
Регистрация: 09.01.2009
Сообщений: 65
По умолчанию

Цитата:
Сообщение от Злая белка Посмотреть сообщение
а вот _Dmitry ваша прога не работает выдает ошибку неизвестный идентификатор n но все равно спасибо)))))
Точно такая же будет и с m, думаю предпологалось, что сами обьявите
Google[Bot] вне форума Ответить с цитированием
Старый 13.01.2009, 22:07   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Злая белка
_Dmitry привел код процедуры, а не всей программы. m и n (да и сам массив) нужно сначала объявить, как и сказал Google[Bot].
Например, это может выглядеть так:
Код:
uses crt;
const n=7;m=8;
type
  TMatrix = array[1..n,1..m] of integer;

var a:Tmatrix;
i,j : integer;
{заполнение матрицы по спирали
n - количество строк, m - количество столбцов}
procedure SnailMatrix(const n,m: integer; var a: TMatrix);
var
  i,j,k,z: integer;
begin
  i:=1; j:=1; k:=0;
  if m = 1 then k:=1;
  for z:=1 to n*m do
    begin
      a[i,j]:=z;
      case k mod 4 of
      0: begin
           j:=j+1;
           if j = (m-i+1) then k:=k+1;
         end;
      1: begin
           i:=i+1;
           if (n-i) = (m-j) then k:=k+1;
         end;
      2: begin
           j:=j-1;
           if (n-i+1) = j then k:=k+1;
         end;
      3: begin
           i:=i-1;
           if (i-1) = j then k:=k+1;
         end;
      end;
    end;
end;

begin
clrscr;
SnailMatrix(n,m,a);
for i:=1 to n do
 begin
 for j:=1 to m do
  write(a[i,j]:3);
 writeln;
 end;
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.01.2009, 22:18   #8
Злая белка
 
Регистрация: 13.01.2009
Сообщений: 3
Радость

Спасибо выручили))))
Злая белка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Вывод массива из функции LeoN PHP 2 13.11.2008 13:57
вывод массива на экран Неясыть Общие вопросы Delphi 9 20.01.2008 20:18
графический вывод значений массива vitalik007 Помощь студентам 6 21.10.2007 20:34