IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите пожалуйста переделать программу
чурмак
сообщение 18.05.2007 12:48
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Данная программа, из одномерного массива делает в матрицу 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.05.2007 13:21
Сообщение #2


Гость






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

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;

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"