Operowanie na pliku tekstowym - funkcja read

0

Mam za zadanie obliczyć pole trójkąta mając do dyspozycji plik tekstowy który wygląda w następujący sposób:

A(1,2) B(3,4) C(5,6)
A(2,3) B(5,4) C(8,6)
A(3,4) B(3,6) C(5,7)
A(4,5) B(7,4) C(3,6)
A(5,6) B(3,8) C(5,2)
A(6,7) B(9,4) C(1,6)
A(7,8) B(3,10) C(2,5)
A(8,9) B(11,4) C(5,9)
A(9,10) B(3,12) C(6,9)

Ma on nazwę wspolrzedne.txt i znajduje się w folderze, w którym znajduje się mój projekt w delphi. Właściwy kod mojego programu, który miałby liczyć długości boków trójkąta, za pomocą których później bez problemu wyliczę z wzoru Herona pole trójkąta, wygląda tak:

procedure TForm1.Button1Click(Sender: TObject);
var
  p:textfile;
  dane:record
    a1:integer;
    a2:integer;
    b1:integer;
    b2:integer;
    c1:integer;
    c2:integer;
  end;
  temp:string;
begin
  assignfile(p,'wspolrzedne.txt');
  reset(p);
  while not eof(p) do begin
    readln(p,temp,dane.a1,temp,dane.a2,temp,)
  end;
end;

Jednak jak widzicie nie dokończyłem tego bo myślę że prowadzi to do niczego. I mam pytanie do Was: jak zrobić tak żeby do rekordu dane (do odpowiednich pól gdzie odpowiednio a1,a2 to współrzędne punktu A, b1,b2 punktu B, c1,c2 punktu C) wprowadzić z podanego wyżej pliku właściwe liczby. Jeśli ruszę z tym to później nie będzie już problemu z dalszą częścią programu. Proszę o poświęcenie chwilki czasu.

0

Za pomocą StringList rozdzielasz poszczególne punkty. Jeden string := jeden punkt. Teraz tylko napisz funkcję która usunie nawiasy i litery. Jak będziesz miał postać WartX,WartY to teraz za pomocą Pos podziel to na dwa stringi i wczytuj.

var
 i, j   :Byte;
 S1, S2 :TStringList;

begin
 S1 := TStringList.Create();
 S2 := TStringList.Create();

 S1.Clear();
 S1.LoadFromFile('d:\plik.txt');
 S2.Delimiter := ' ';

 for i := 0 to S1.Count-1 do
  begin
   S2.Clear();
   S2.DelimitedText := S1.Strings[i];
   for j := 0 to S2.Count-1 do WriteLn(S2.Strings[j]);
  end;
 ReadLn;
 S1.Free();
 S2.Free();
end.

Tu masz taką funkcję

Pamiętaj aby dla niej okroić stringa ze znaków A( oraz )

1 użytkowników online, w tym zalogowanych: 0, gości: 1