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

 
 Ответить  Открыть новую тему 
> ЧТо не так в коде?
сообщение
Сообщение #1


Новичок
*

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

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


Код

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


Но он рисует её перевёрнуто, в чём проблема? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
в чём проблема?
В том, что при обращении к map[x, y] изменение Х - это изменение строки, а при gotoxy(x, y) изменение Х - это изменение столбца...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Но по программе x:=1 y:=1 если y>5, тобиш изменение строки, или нет???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Я ж тебе говорю, что индексы X и Y меняются для GotoXY и для Map одинаково, так? У тебя же все обрабатывается в одном цикле. НО... Значения X для GotoXY и для Map - совершенно противоположные...

Пойми, при работе с матрицами первым изменяется самый последний индекс, т.е. сначала ты проходишь по первой строке, и только потом переходишь на вторую, правда? Это достигается изменением в Map[i, j] индекса J быстрее, чем индекса i... Помотри, что у тебя меняется быстрее... Y, не так ли? Переходим теперь к GotoXY... Что означает случай, когда Y меняется быстрее чем X? То, что ты проходишь сначала по первому столбцу, и только потом переходишь ко второму, потому что ОY - это ось вертикальная...

Вот тебе и противоречие...

Хочешь правильной работы - обращайся к Map[Y, X] ...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Мне друг говорил чтото похожее а я не принял значения, вот я дурак nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Вот рабочая прога
Код

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 местами lol.gif

Сообщение отредактировано: ilua_great -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 20.09.2020 2:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name