-
матрица 8х8 Заполнить против часовой стрелки по спирали вовнутрь.
1 28 27 26 25 24 23 22
2 29......................21
3..........................20
4..........................19
5..........................18
6..........................17
7..........................16
8 9 10 11 12 13 14 15 нужно заполнить в один цикл
-
Чет слишком простая... так и не понял в чем была сложность: program test;
uses
Types,
SysUtils;
type
TCursorDirectional = (cdDown, cdRight, cdUp, cdLeft);
const
CursorOffsets: array [TCursorDirectional] of TPoint =
(
(X: 0; Y: 1),
(X: 1; Y: 0),
(X: 0; Y: -1),
(X: -1; Y: 0)
);
var
Buff: array [0..7] of array [0..7] of Byte;
I, Directional: Integer;
Cursor, CursorOffset: TPoint;
X, Y: Integer;
begin
FillChar(Buff, 64, 0);
Cursor := Point(0, 0);
Directional := 0;
CursorOffset := CursorOffsets[TCursorDirectional(Directional mod 4)];
for I := 1 to 64 do
begin
Buff[Cursor.X, Cursor.Y] := I;
if (Buff[Cursor.X + CursorOffset.X,
Cursor.Y + CursorOffset.Y] <> 0) or
(Cursor.X + CursorOffset.X > 7) or
(Cursor.Y + CursorOffset.Y > 7) then
begin
Inc(Directional);
CursorOffset := CursorOffsets[TCursorDirectional(Directional mod 4)];
end;
Inc(Cursor.X, CursorOffset.X);
Inc(Cursor.Y, CursorOffset.Y);
end;
for Y := 0 to 7 do
begin
for X := 0 to 6 do
Write(Format('%.2d, ', [Buff[X, Y]]));
Writeln(Format('%.2d, ', [Buff[7, Y]]));
end;
Readln;
end.
-
#include <stdio.h>
#include <stdlib.h>
#define DOWN 0
#define RIGHT 1
#define UP 2
#define LEFT 3
#define W 8
#define H 8
struct Pad pad = ;
int x = 0, y = 0;
int dir = DOWN;
int move()
break;
case RIGHT:
x++;
if (x == W - pad.right)
break;
case UP:
y--;
if (y < pad.top)
break;
case LEFT:
x--;
if (x < pad.left)
break;
}
}
int main()
;
int i = 2;
table[0][0] = 1;
while (i <= W*H)
int j;
for (j = 0; j < H; j++)
puts("");
}
return 0;
}
Альтернативная реализация :)
-
А слабо вывести на экран за один цикл на экран вывести
-
> А слабо вывести на экран за один цикл на экран вывести
Раза 4 перечитал:))) for I := 0 to 63 do
if (I + 1) mod 8 = 0 then
Writeln(Format('%.2d', [Buff[I mod 8, I div 8]]))
else
Write(Format('%.2d, ', [Buff[I mod 8, I div 8]]));
-
> нужно заполнить в один цикл
var три массива: m1(координата по Х), m2(координата по Y), m3(вносимое число)
for i:=1 to 64 do матрица(m1[i],m2[i]):=m3[i]
:)))
-
Это классическая задачка с Тимуса... Нам препод на первом курсе, в конце первого семестра сказал: Вот есть задачки, принесете листинг решения на экзамен будет плюс... Я ступил... Вместо того, чтобы решит ьодну задачу, решил все и принес ему... Он посмотрел, поставил автомат и выгнал. :)
|