Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.05.2009, 12:09
Remlin Remlin вне форума
Прохожий
 
Регистрация: 03.05.2009
Сообщения: 2
Репутация: 10
По умолчанию Считывание матрицы из файла

Дан файл с матрицей вида
0 0 0 0 1000 0 1 0 ...
0 0 0 0 400 0 1 1 ...
.....
Надо перегнать ее в массив, с которым в дальнейшем будут производиться действия.

Главный для меня вопрос как так считать данные чтобы например 1000 получалась в матрице именно как тысяча а не как единица и три нуля.Помогите кому не влом, а то сам в delphi вообще нуль.
Ответить с цитированием
  #2  
Старый 03.05.2009, 12:37
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Код:
var
  Form1: TForm1;
  Matrix: array of array of Integer;

.........................

procedure LoadMatrix(_FileName: TFileName);
var
  SList, RList: TStringList;
  i, j, RowCnt, ColCnt: Integer;
begin
  if not FileExists(_FileName) then Exit;
  SList := TStringList.Create;
  RList := TStringList.Create;
  try
    SList.LoadFromFile(_FileName);
    RowCnt := SList.Count;
    SetLength(Matrix, RowCnt);
    RList.Delimiter := ' ';
    for i := 0 to RowCnt - 1 do
    begin
      RList.DelimitedText := SList.Strings[i];
      ColCnt := RList.Count;
      SetLength(Matrix[i], ColCnt);
      for j := 0 to ColCnt - 1 do Matrix[i][j] := StrToInt(RList.Strings[j]);
    end;
  finally
    SList.Free;
    RList.Free;
  end;
end;
Ответить с цитированием
  #3  
Старый 03.05.2009, 12:45
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Сообщение

Если известны размеры матрицы
n - кол-во строк = 5
m - кол-во столбцов 6
и дан файл, например, input.txt
Код:
var i,j:integer;
    mass:array [1..5] of array [1..6] of integer;
begin
 AssignFile(input,'input.txt');
 Reset(input);

 for i:=1 to n do
  for j:=1 to m do Read(mass[i][j]);
end;
Если размеры матрицы заранее не известны, то
1. или используешь динамические массивы
2. или создаёшь массив такого размера, чтобы 100% влезло (что проще)

Используя 2 вариант:
Код:
var i,j:integer;
    mass: array [1..50] of array [1..50] of integer;
begin
 AssignFile(input,'input.txt');
 Reset(input);

 i:=1;
 while not EOF(input) do
  begin
   j:=1;
   while not EOLN(input) do
    begin
     Read(mass[i][j]);
     j := j + 1;
    end;
   i := i + 1;
   Readln;
  end;

end;
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #4  
Старый 03.05.2009, 19:50
Remlin Remlin вне форума
Прохожий
 
Регистрация: 03.05.2009
Сообщения: 2
Репутация: 10
По умолчанию

Спасибо за помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:25.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025