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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.03.2012, 16:15
Twik Twik вне форума
Прохожий
 
Регистрация: 02.03.2012
Сообщения: 1
Репутация: 10
По умолчанию Помогите пожалуйста с матрицей

Есть файл 1.txt. Из него надо считать матрицу А. Потом нужно, чтобы программа из матрицы Е(единичной матрицы) вычла матрицу А, считанную из файла. Получившуюся матрицу В (В=Е-А) отобразить на форме и записать в другой файл.
Ответить с цитированием
  #2  
Старый 02.03.2012, 17:42
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

это как текст превратить в матрицу
PHP код:
type
  tline 
= array of double;
  
tmatrix = array of tline;


function 
split(s: string; c: char=' '): string;
begin
  result 
:= StringReplace(s, c, #13#10, [rfReplaceAll]);
end;

function 
no_empties(s: string): string;
begin
  
while s <> StringReplace(s, #13#10#13#10, #13#10, [rfReplaceAll]) do
    
s := StringReplace(s, #13#10#13#10, #13#10, [rfReplaceAll]);
  
result := s;
end;

function List(
s: string): TStringList;
begin
  result 
:= TStringList.Create;
  
result.Text := s;
end;

function 
line(s: string): tline;
var 
ss: TStringList;
    
i: integer;
begin
  ss 
:= List(no_empties(split(s)));

  
setlength(result, ss.Count);
  for 
i := 0 to ss.Count - 1 do
    
result[i] := StrToFloat(ss[i]);
  
ss.Free;
end;

function 
convert(ss: TStringList): tmatrix; overload;
var 
i: integer;
begin
  setlength
(result, ss.count);
  for 
i := 0 to ss.Count - 1 do
    
result[i] := line(ss[i]);
end;

function 
convert(s: string): tmatrix; overload; overload;
var 
ss: TStringList;
begin
  ss 
:= TStringList.Create;
  
ss.Text := s;
  
result := convert(ss);
  
ss.Free;
end;

function 
convert(a: tmatrix; format: string = ''): string; overload;
var 
i, j: integer;
begin
  
for i := 0 to length(a) - 1 do
  
begin
    
for j := 0 to length(a[i]) - 1 do
    
begin
      
if j <> 0 then result := result + ' ';

      if 
format = '' then
        result 
:= result + FloatToStr(a[i, j])
      else
        
result := result + FormatFloat(format, a[i, j]);

    
end;
    
result := result + #13#10;
  
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DecimalSeparator 
:= '.';
  if 
memo1.Lines.Count = 0 then memo1.text := '1 2 3'#13#10'2 2 2'#13#10'3 2 1';
  
memo2.text := convert(convert(memo1.text))
end; 
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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