Другие языки программирования и технологии
Заполнить массив против часовой стрелки начиная с нижнего правого угла размер массива N*N и допустить возможность измене
Заполнить массив против часовой стрелки начиная с нижнего правого угла размер массива N*N и допустить возможность изменения значения N pascal, delphi 7 Как то так 09 08 07 06 05 10 21 20 19 04 11 22 25 18 03 12 23 24 17 02 13 14 15 16 01
const Size = 19;
var A : array [1..Size, 1..Size] of Word; Num : Word; N, Row, Col, D : Byte; dRow, dCol : ShortInt;
procedure NextStep;
begin
if dRow = -1 then
begin
if (Row + dRow > 0) and (A[Row + dRow, Col] = 0) then Row := Row + dRow
else begin dRow := 0; dCol := - 1; NextStep; end;
end
else if dCol = -1 then
begin
if (Col + dCol > 0) and (A[Row, Col + dCol] = 0) then Col := Col + dCol
else begin dRow := +1; dCol := 0; NextStep; end;
end
else if dRow = +1 then
begin
if (Row + dRow <= N) and (A[Row + dRow, Col] = 0) then Row := Row + dRow
else begin dRow := 0; dCol := +1; NextStep; end;
end
else { dCol = +1 }
begin
if (Col + dCol <= N) and (A[Row, Col + dCol] = 0) then Col := Col + dCol
else begin dRow := -1; dCol := 0; NextStep; end;
end;
end;
begin
Write('N = '); ReadLn(N);
if Not(N in [1..Size]) then begin WriteLn('1 <= N <= ', Size); Halt; end;
for Row := 1 to N do for Col := 1 to N do A[Row, Col] := 0;
Row := N; Col := N; dRow := -1; dCol := 0; Num := 0;
repeat
Inc(Num);
A[Row, Col] := Num;
if Num < N*N then NextStep;
until Num = N*N;
D := 2; if N > 3 then if N > 9 then D := 4 else D := 3;
for Row := 1 to N do begin for Col := 1 to N do Write(A[Row, Col]:D); WriteLn; end;
end.
var A : array [1..Size, 1..Size] of Word; Num : Word; N, Row, Col, D : Byte; dRow, dCol : ShortInt;
procedure NextStep;
begin
if dRow = -1 then
begin
if (Row + dRow > 0) and (A[Row + dRow, Col] = 0) then Row := Row + dRow
else begin dRow := 0; dCol := - 1; NextStep; end;
end
else if dCol = -1 then
begin
if (Col + dCol > 0) and (A[Row, Col + dCol] = 0) then Col := Col + dCol
else begin dRow := +1; dCol := 0; NextStep; end;
end
else if dRow = +1 then
begin
if (Row + dRow <= N) and (A[Row + dRow, Col] = 0) then Row := Row + dRow
else begin dRow := 0; dCol := +1; NextStep; end;
end
else { dCol = +1 }
begin
if (Col + dCol <= N) and (A[Row, Col + dCol] = 0) then Col := Col + dCol
else begin dRow := -1; dCol := 0; NextStep; end;
end;
end;
begin
Write('N = '); ReadLn(N);
if Not(N in [1..Size]) then begin WriteLn('1 <= N <= ', Size); Halt; end;
for Row := 1 to N do for Col := 1 to N do A[Row, Col] := 0;
Row := N; Col := N; dRow := -1; dCol := 0; Num := 0;
repeat
Inc(Num);
A[Row, Col] := Num;
if Num < N*N then NextStep;
until Num = N*N;
D := 2; if N > 3 then if N > 9 then D := 4 else D := 3;
for Row := 1 to N do begin for Col := 1 to N do Write(A[Row, Col]:D); WriteLn; end;
end.
пиши в аську 16 95271 4 3
Похожие вопросы
- Дан массив N*N. Найти индекс левого верхнего элеманта квадрата 2х2 с макс суммой+вывезти сумму! Помагите написать код
- программа в Паскале. осуществить поворот матрицы против часовой стрелки на 90 градусов
- Заполнить случайным образом одномерный массив из n элементов и обменять местами последний и максимальный (в паскале)
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Задан массив m на n. Числа m и n вводятся вручную. Заполнить массив случайным образом. Найти произведение чисел от 10 до
- ПОМОГИТЕ! В паскале заполнить квадратный массив размерностью n числами 1,2,3… по спирали от края к центру по часовой стр
- Дан линейный массив чисел N. N вводит пользователь. Вывести все простые числа массива.
- Задан массив Z(N).Переписать его в массив Y. С++
- Дан прямоугольный целочисленный массив размером N*N. Определить является ли данный массив магическим квадратом, т.е. сум
- помогите!!! вопрос по C++ нужно написать программку "заполните массив так, чтобы все его элементы были различны.