У меня есть одна задача, решённая. точней я её переписал со своими значениями, и ничего в проге не понял можете объяснить?
это постороение двум мас спиралью (с верхнего левого угла)
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.
11 марта 2008 в 21:02
Мне кажется паскаль повиснет! Цикл until k>=n*m будет выполняться, пока не переберёт от 1 до n*m, но этого быть не может и он войдёт в бесконечный цикл.По условию ниже смотрел)
11 марта 2008 в 19:05
Списывать вообще невыгодно. Дойти своей головой значительно полезнее. Так это ж думать нужно!
11 марта 2008 в 17:03
Переписывать задачи не выгодно… Быстро забываются алгоритмы.
10 марта 2008 в 21:01
как всё запутано)
10 марта 2008 в 20:05
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 построчно выводится на экран заполненный массив.