![]() |
![]() ![]() |
![]() |
ilua_great |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Код program maper; uses crt; var f:text; x,y:integer; map: array[1..10,1..10]of integer; begin clrscr; assign(f,'map'); reset(f); {load} writeln('load'); x:=1; y:=1; repeat read(f,map[x,y]); y:=y+1; if y>10 then begin y:=1; x:=x+1; end; until x>10; writeln('load 100%'); close(f); {load} readln; clrscr; {draw} x:=1; y:=1; repeat gotoxy(x,y); write(map[x,y]); y:=y+1; if y>10 then begin y:=1; x:=x+1; end; until x>10; {draw} readln; end. Этот код должен рисовать картинку как в файле Код 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 7 7 7 7 7 7 7 7 1 1 1 1 1 1 1 1 1 1 1 Но он рисует её перевёрнуто, в чём проблема? ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата в чём проблема? В том, что при обращении к map[x, y] изменение Х - это изменение строки, а при gotoxy(x, y) изменение Х - это изменение столбца... |
ilua_great |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Но по программе x:=1 y:=1 если y>5, тобиш изменение строки, или нет???
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Я ж тебе говорю, что индексы X и Y меняются для GotoXY и для Map одинаково, так? У тебя же все обрабатывается в одном цикле. НО... Значения X для GotoXY и для Map - совершенно противоположные...
Пойми, при работе с матрицами первым изменяется самый последний индекс, т.е. сначала ты проходишь по первой строке, и только потом переходишь на вторую, правда? Это достигается изменением в Map[i, j] индекса J быстрее, чем индекса i... Помотри, что у тебя меняется быстрее... Y, не так ли? Переходим теперь к GotoXY... Что означает случай, когда Y меняется быстрее чем X? То, что ты проходишь сначала по первому столбцу, и только потом переходишь ко второму, потому что ОY - это ось вертикальная... Вот тебе и противоречие... Хочешь правильной работы - обращайся к Map[Y, X] ... Сообщение отредактировано: volvo - 1.05.2007 12:03 |
ilua_great |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Мне друг говорил чтото похожее а я не принял значения, вот я дурак
![]() |
ilua_great |
![]() ![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Вот рабочая прога
Код program load; uses crt; var x,y:integer; f:text; room:array[1..6,1..5]of integer; procedure load_room; begin assign(f,'room'); reset(f); for y:=1 to 5 do begin for x:=1 to 6 do begin read(f,room[x,y]); end; end; close(f); end; procedure draw_room; begin for y:=1 to 5 do begin for x:=1 to 6 do begin gotoxy(x,y); write(room[x,y]); end; end; end; begin load_room; draw_room; readln; end. Код 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 зы Как ты , вова, всё загнул, но всё равно спасибо! Как говорил один не безизвестный чел-"Истина где-то рядом", я просто перепутал x и y местами ![]() Сообщение отредактировано: ilua_great - 2.05.2007 12:43 |
![]() ![]() |
![]() |
Текстовая версия | 14.07.2025 20:55 |