singlepost

Pascal (вопрос по задаче 5) << На главную или назад  

У меня есть одна задача, решённая. точней я её переписал со своими значениями, и ничего в проге не понял можете объяснить?

это постороение двум мас спиралью (с верхнего левого угла)

program num_str;
var
a:array[1..100,1..100]of integer;
i,imax,imin,j,jmax,jmin,k,m,n:integer;
begin
.. write('Vvedite 4islo strok: ');
..readln(m);
… write('Vvedite 4islo stolbcov: ');
…readln(n);
…jmin:=1;
…jmax:=n;
…imin:=2;
…. imax:=m;
….k:=0;
repeat
.. for j:=jmin to jmax do
..begin
..inc(k);
..a[imin-1,j]:=k;
..end;
..for i:=imin to imax do
..begin
..inc(k);
..a[i,jmax]:=k;
..end;
..dec(jmax);
…for j:=jmax downto jmin do
…begin
….inc(k);
…a[imax,j]:=k;
….end;
….dec(imax);
….for i:=imax downto imin do
…. begin
…inc(k);
…a[i,jmin]:=k;
……..end;
……..inc(imin);
……..inc(jmin);
until k>=m*n;
….for i:=1 to m do
…. begin
…. writeln;
…..for j:=1 to n do write(a[i,j]:5);
…end;
….readln;
..end.

5 ответов в теме “Pascal (вопрос по задаче 5)”

  1. 5
    Дима Виноградов ответил:

    Мне кажется паскаль повиснет! Цикл until k>=n*m будет выполняться, пока не переберёт от 1 до n*m, но этого быть не может и он войдёт в бесконечный цикл.По условию ниже смотрел)

  2. 4
    Александр Чигринец ответил:

    Списывать вообще невыгодно. Дойти своей головой значительно полезнее. Так это ж думать нужно!

  3. 3
    Виталий Борисок ответил:

    Переписывать задачи не выгодно… Быстро забываются алгоритмы.

  4. 2
    Сергей Владимирович ответил:

    как всё запутано)

  5. 1
    Александр Чигринец ответил:

    1. Вводятся с клавиатуры "m" – число строк (по идее должна быть проверка на то, что m не выходит за диапазон 1 – 100) и число стобцов "n"
    2. Устанавливаются начальные значения переменных.
    3. Внешний цикл repeat …. until k>=n*m крутится до тех пор, пока переменная "к" не пробежит все значения от 1 до n*m
    4. Внутри цикла repeat четыре цикла for, которые заполняют соответственно:
    4.1 столбец массива слева сверху вниз
    4.2 строку снизу массива слева направо
    4.3 столбец массива справа снизу вверх
    4.4 строку массива справа налево
    5. после выхода из цикла repeat построчно выводится на экран заполненный массив.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.