Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2011, 10:35   #1
ivannes
Пользователь
 
Аватар для ivannes
 
Регистрация: 16.06.2011
Сообщений: 42
Печаль Чтение массивов из файла и их нестандартный вывод

Господа форумчане! Помгите с насущной проблемой: решили вместе с другом текстовую игру написать, для развлечения) и тут стал вопрос ребром - как прочитать массив из файла(эт я знаю) и вывести это так
где 0 там # а где 1 там ' '. Помогите А?
Помог? тогда жми на весы
Девушка что оператор мобильной связи, когда денег нет, то она не доступна ©Радио Маяк
ivannes вне форума Ответить с цитированием
Старый 30.06.2011, 11:38   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
вывести это так
где 0 там # а где 1 там ' '.
Все просто. Описываете массив символов. Например двухмерный
Код:
  Matr2:array[1..5,1..5] of Char;
И записываете в него то, что нужно
Код:
 For i:=1 to 5 do
  Begin
    For j:=1 to 5 do
    Begin
      If Matr1[i,j] = 0 then Matr2[i,j]:=#35
                        else Matr2[i,j]:=#32;
      Write(Matr2[i,j]:3)
    End;
    Writeln
  End;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 22.07.2011, 14:43   #3
ivannes
Пользователь
 
Аватар для ivannes
 
Регистрация: 16.06.2011
Сообщений: 42
По умолчанию

он выводит "несовпадение типов", может в коде ошибка? вот код
Код:
program game;
uses
    crt;
var
   key: char;
   x,y,w,i,j:integer;
   map:array[1..5, 1..5] of char;
   tile:array[0..1] of integer;
   t:text;
   str:string;
procedure LoadMap; {процедура открывающая карту}
begin
assign(t,'map.txt');
reset(t);
while not Eof(t) do
begin
readln(t,str);
end;
end;
begin
loadmap;
for j:=1 to 5 do
    begin
         if map[i,j] = 0 then map[i,j]:=#35
                       else map[i,j]:=#32;
         write(map[i,j]:3)
         end;
    writeln
end;
x:=20;
y:=20;
repeat
gotoXY(x,y); {алгоритм движения нолика}
textcolor(white);
write('O');
key:=readkey;
gotoxy(x,y);
textcolor(black);
write('O');

if key='w' then begin {прописываем клавиши}
y:=y-1;
end;
if key='a' then begin
x:=x-1;
end;
if key='s' then begin
y:=y+1;
end;
if key='d' then begin
x:=x+1;
end;
until key='r';
end.
Помог? тогда жми на весы
Девушка что оператор мобильной связи, когда денег нет, то она не доступна ©Радио Маяк
ivannes вне форума Ответить с цитированием
Старый 22.07.2011, 14:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выводит "несовпадение типов"
На какой строке?
И еще: Я так и не понял где в коде заполнение массива идет...
Цитата:
if map[i,j] = 0 then map[i,j]:=#35
У тебя массив символьный а ты его с нулем (это число) сравниваешь.
Пиши уж так:
Код:
if map[i,j] = #0 then map[i,j]:=#35
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2011, 13:05   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
var
 //  key: char;
 // x,y,w,i,j:integer;
   map:array[1..5, 1..5] of char;
 //  tile:array[0..1] of integer;
   t:text;
  // str:string;
  i,j,a:byte;
procedure LoadMap; {процедура открывающая карту}
begin
assign(t,'map.txt');
reset(t);
for i:=1 to 5 do
 begin
  for j:=1 to 5 do
   begin
    read(t,a);
    if a = 0 then map[i,j]:=#35
    else map[i,j]:=#32;
    write(map[i,j]:3)
   end;
  writeln
 end;
end;
puporev вне форума Ответить с цитированием
Старый 24.07.2011, 07:19   #6
ivannes
Пользователь
 
Аватар для ivannes
 
Регистрация: 16.06.2011
Сообщений: 42
По умолчанию

спасибо, но отображение не коректое(
Помог? тогда жми на весы
Девушка что оператор мобильной связи, когда денег нет, то она не доступна ©Радио Маяк
ivannes вне форума Ответить с цитированием
Старый 24.07.2011, 11:09   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Поправь вывод чтобы не было лишних пробелов.
Код:
write(map[i,j])
А так все выводит как ты и написал.
puporev вне форума Ответить с цитированием
Старый 24.07.2011, 16:33   #8
ivannes
Пользователь
 
Аватар для ivannes
 
Регистрация: 16.06.2011
Сообщений: 42
По умолчанию

вот теперь хорошо) но в документе
11111
10001
10001
10001
11111
а он выводит спплошными #, т.е. как будто в документе одни еденицы. В чем проблема?
Помог? тогда жми на весы
Девушка что оператор мобильной связи, когда денег нет, то она не доступна ©Радио Маяк
ivannes вне форума Ответить с цитированием
Старый 24.07.2011, 17:00   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цифры в файле нужно писать через пробел
Код:
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1
puporev вне форума Ответить с цитированием
Старый 25.07.2011, 05:33   #10
ivannes
Пользователь
 
Аватар для ivannes
 
Регистрация: 16.06.2011
Сообщений: 42
По умолчанию

не помогает(
Помог? тогда жми на весы
Девушка что оператор мобильной связи, когда денег нет, то она не доступна ©Радио Маяк
ivannes вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение из текстового файла в структуру TRAIN и вывод информации по запросу (Паскаль) Arabic_Coffee Помощь студентам 0 14.05.2011 21:11
СИ чтение чисел из файла, сортировка и вывод Millen Помощь студентам 1 07.03.2011 02:26
Нестандартный вывод из БД sersr Помощь студентам 3 08.11.2010 21:32
if и чтение+вывод из файла .txt webber9989 PHP 4 24.08.2010 22:13
Чтение и вывод ini-файла JoLan Общие вопросы Delphi 5 27.07.2010 21:32