Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите пожалуйста переделать программу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
чурмак
Данная программа, из одномерного массива делает в матрицу 8х8 и печатает на экране змейкой. А мне нужно чтобы одномерный массив сформировывался в двумерный, а потом только выводился на экран.

program SnakeMatrix; 

uses
crt;

var
data : array[0..63] of integer;


procedure fillDataSimple;
var
i: integer;
begin
for i := 0 to 63 do begin
data[i] := i + 1;
end;
end;

procedure proceedCoords(var x, y, dx, dy: integer);
var
x1, y1: integer;
dx1, dy1: integer;
xOut, yOut: boolean;
begin

if ((x = 7) and (y = 7)) then begin
x := 0;
y := 0;
dx := -1;
dy := 1;
end else begin
x1 := x + dx;
y1 := y + dy;

xOut := ((x1 < 0) or (x1 > 7));
yOut := ((y1 < 0) or (y1 > 7));

if xOut then begin
y := y + 1;
dx := -dx;
dy := -dy;
end else if yOut then begin
x := x + 1;
dx := -dx;
dy := -dy;
end else begin
x := x1;
y := y1;
end;
end;

end;


var
x, y: integer;
dx, dy: integer;
i, j: integer;
begin
clrscr;

fillDataSimple;

x := 0;
y := 0;
dx := -1;
dy := 1;

for i := 0 to 63 do begin
gotoxy(5 * x + 1, 2 * y + 1);
delay(15000);
write(data[i]);
proceedCoords(x, y, dx, dy);
end;

readkey;

end.
volvo
Основной цикл меняешь так:

var
matrix : array[0 .. 7, 0 .. 7] of integer;

...

for i := 0 to 63 do begin
matrix[y, x] := data[i];
proceedCoords(x, y, dx, dy);
end;

{ И печатаешь результат }
for i := 0 to 7 do begin
for j := 0 to 7 do
write(matrix[i, j]:4);
writeln; writeln;
end;

zara44
Чермак ты чтоли)))))? Переделываешь)))

М
для личных сообщений есть ПМ

чурмак
Огромное спасибо! А не подскажешь где прописать строчку gotoxy(5 * x + 1, 2 * y + 1);
чтобы массив змейкой появлялся? Или изменить эту строчку как-то?

Добавлено через 1 мин.
да
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.