[Pascal] Liczby (ujemne) w file text

0

Cześć.

Chciałbym dowiedzieć się, w jaki sposób wczytujecie liczby (dodatnie i ujemne, oddzielone spacjami i znakiem nowej linii) z plików textowych, np. do tablicy dynamicznej...?

Problem polega na tym nieszczęsnym minusie (liczb ujemnych). Próbowałem wszystkiego co przyszło mi do głowy:

  • czytałem znak po znaku z odpowiednimi warunkami,
  • czytałem linie jako string, analizując i próbując robić split między spacjami.

Dla rozjaśnienia sytuacji, pokazuję strukturę przykładowego pliku test.dat (macierz: 5X4):

2 3 1 4 5
-1 2 0 1 -15
2 2 0 1 2
0 -65 1 2 -1

Jak zapewne domyślacie się, chciałbym najpierw poznać ilość cyfr (akurat to jest proste), na podstawie tego ustalić wielkość tablicy dynamicznej i sprawnie wrzucić tam poszczególne liczby w pętli.

Jak Wy rozwiązujecie tego typu problem?

Dziękuję.

0

AssignFile, Reset, Read, CloseFile, EoF, while, if
tych komend potrzebujesz aby to napisać.
Jeśli są to pliki z nieznanym rozmiarem to jeszcze SetLength, Length i Eoln. Opis i przykłady masz w helpie.

A jak chcesz pomocy to najpierw pokaż co sam napisałeś

0
MyTextFile:=TStringList.Create; //w var TStrings
MyTextFile.LoadFromFile('data.txt');
CurrentLine:=TStringList.Create;// jw
for a:=0 to MyTextFile.Count-1 do //a,s integer
begin
  CurrentLine.Clear;
  CurrentLine.Add(WrapText(MyTextFile.Strings[a],1));
  for s:=0 to CurrentLine.Count-1 do
    TwojaTablica[a,s]:=StrToInt(CurrentLine.Strings[s]);
end;
0

@RFabianski - tylko ze tego w pascalu nie zrobi, zwroc uwage na prefix w temacie.
a jesli juz w delphi z wykorzystaniem TStringList to mozna uzywajac tylko jednej zmiennej:

var list:TStringList;
begin
list:=TStringList.Create;
list.LoadFromFile('plik.dat');
list.Text:=StringReplace(list.Text, ' ', #13#10, [rfReplaceAll]);

i masz kolejne liczby w kolejnych itemach.

0

@Misiekd
Nabijasz posty czy tylko udajesz mądrego? Sądzisz, że nie znam języka bałwanie... Nie pytam o to jakich słów kluczowych czy funkcji mam użyć, tylko o wskazówki do sposobu analizy pliku, którego strukturę już znacie.

Po co Ci mój kod, skoro nie sprawdza się w działaniu? Pytasz tak tylko dla głupiej zasady.

@RFabianski
Kolejny...

Panowie, to jest forum czy koło naukowe programistów .NET? Mamy sobie pomagać i dzielić wiedzą, tak - a nie rywalizować czy odstawiać szlachtę.

Tak więc albo pomożecie albo temat do usunięcia.

0
Mawrecki napisał(a)

@Misiekd
Nabijasz posty czy tylko udajesz mądrego? Sądzisz, że nie znam języka bałwanie... Nie pytam o to jakich słów kluczowych czy funkcji mam użyć, tylko o wskazówki do sposobu analizy pliku, którego strukturę już znacie.

Po co Ci mój kod, skoro nie sprawdza się w działaniu? Pytasz tak tylko dla głupiej zasady.

@RFabianski
Kolejny...

Panowie, to jest forum czy koło naukowe programistów .NET? Mamy sobie pomagać i dzielić wiedzą, tak - a nie rywalizować czy odstawiać szlachtę.

Tak więc albo pomożecie albo temat do usunięcia.

zatem temat do usuniecia. szczegolnie jesli zaczynasz kogos obrazac (balwanie).
kod jest po to zeby pokazac ze sam cos robisz, a nie jestes kolejnym leniem piszacym cos na zaliczenie i bezczelnie czekajacym na gotowy kod.
to, co Misiek Ci napisal powinno Ci wystarczyc. jesli umiesz myslec to napiszesz, jesli nie to daruj sobie programowanie.

0

@cimak
Myślisz gościu, że robię to dla przyjemności? Wkurza mnie brak kompetencji u ludzi, uporczywie próbujących udowodnić coś innego.

A ja pytam tylko o sposób "rozpoznawania" liczb ujemnych w pliku typu file text.

Po czym w takim razie sądzisz, że jestem jak ty to piszesz "leniem"... bo nie udostępniłem kodu, który i tak nie spełnia swojej roli? Żenujące :-O.

BTW. Z podpisu Miśka:

przez internet społeczeństwo jest coraz głupsze ...

Zgadzam się z tym całkowicie.

0

sam jesteś idiotą - liczba jest liczba i nie trzeba jej "rozpoznawać". A jakbyś znał chociaż podstawy, ba jakbyś chociaż przeczytał jak działa polecenie read to byś nie pisał takich bzdur.

BTW żenująca i wkurzająca to jest twoja i tobie podobnym postawa - jestem super, wspaniały, wiem wszystko najlepiej, zadanie swoje zrobiłem w 99%, tylko że nie działa. Kodu wam nie pokaże, bo jest super tajny/brzydki/pies go zjadł/itp ale napisali byście mi to zadanko bo ja akurat czasu nie mam...

0

@Misiekd
I tu Cię rozczaruję. READ czyta kolejne znaki, także koniec wiersza. Przyporządkowuje kolejne znaki kolejnym zmiennym z listy.

jestem super, wspaniały, wiem wszystko najlepiej

Wow, skoro jesteś taki fajniuśki, to chylę czoło.

Obraziłem Cię, bo na to zasługujesz. Traktujesz ludzi z góry, od razu przyczepiłeś mi etykietę nooba, który w życiu kodu nie pisał. Bardzo się pomyliłeś.

Faktycznie mój temat jest trywialny, ale gdybym nie miał z tym problemów głowy bym nikomu nie zawracał.

Skoro nie potrafisz pomagać innym udzielając się na forum, co Ty tu robisz?

0

Powiem tylko jedno panie Mawrecki, akurat Misiekd jest moim zdaniem jedną z najmądrzejszych osób na tym forum, pomagał wielu osobom w tym mnie nie raz wię kolego obraziłeś nie odpowiednią osobę.

Po drugie dostałeś od niego konkretną odpowiedź czego ci potrzeba żeby wykonać zadanie. Wystarczył odpalić delphi, helpa chociaż zobaczyć do czego dane polecenia służą i miałbyś problem z głowy. Ale lepiej wrócić na forum i obrażać ludzi bo się gotowca nie dostało.

Jak już wspomniałeś to jest forum pomagamy ludzia a oni pomagaja nam. Staramy się podsuwać ludza rozwiązania tak żeby też się czegoś nauczyli a nie tylko skopiowali kod ze strony.

Nikt tu nic nie próbuje udowadniać bo nie musi zwłaszcza przed ludźmi którzy tak się zachowują.
Bardzo słusznie zaznaczyłeś że zgadzasz się z opisem MiśkaD bo sądząc po twoim podejściu to pasuje do ciebie ten opis.

0

@puchi
A kolega zwrócił uwagę na temat? Delphi mnie nie interesuje, tylko (Free) Pascal.

Według mnie jesteście bardzo przewrażliwieni na punkcie lamerskich pytań i każdego pytającego podejrzewacie o niesprawiedliwe wyłudzanie gotowego kodu. Czy w którymś z moich postów poprosiłem o kod? Nie! Poprosiłem o wskazówki czytania liczb ujemnych, bo mam z tym problem.

Żenada.

0

Żenada to jest to że wskazówki dostałeś a wróciłeś z obelgami

0

@puchi
Nie odróżniasz obelgi od somatycznej krytyki. Ale to już Twój problem.

0

Masz, udowodnię ci, że nie wiesz kompletnie nic i że się ciepiesz jakbyś pozjadał wszystkie rozumy. A tak naprawdę jesteś zwykłym zakompleksionym leniem.

program dupa_maryna;

var
  f: text;
  arr: array[1..5,1..4] of integer;
  i, j: integer;

begin
  i := 1;
  j := 1;
  assign(f, 'c:\aa.txt');
  reset(f);
  while not EoF(f) do
  begin
    read(f, arr[i, j]);
    write(arr[i, j], ' | ');
    inc(i);
    if i = 6 then
    begin
      writeln;
      i := 1;
      inc(j);
    end;
  end;
  close(f);
  readln;
end.

pokaż mi teraz panie mastach, czy read wczytuje po znaku?? Gdzie tam jest "rozpoznawanie" liczb i czy poza komendami, które ci podałem potrzebne były jakieś inne?

0
Mawrecki napisał(a)

[...] Mamy sobie pomagać i dzielić wiedzą, tak - a nie rywalizować czy odstawiać szlachtę.

taaak... a Ty masz tu konto od 21-10-2008 i napisales wszytkiego 6 postow w jednym temacie (swoim).
Ty tylko ŻĄDASZ pomocy i obrazasz innych a sam nie wnosisz absolutnie NIC na tym forum (i smiesz nam zwracac uwage ze forum jest od tego zeby sobie pomagac?).
na zakonczenie powiem Ci jedno: miskowi do pięt nie dorastasz wiec siedz cicho, podziekuj za pomoc i najlepiej wiecej tu nie wracaj, chyba ze odchamiejesz.

pozdrawiam

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