Plik .txt + tablica

0

Witam. Mam drobny problem z wczytywaniem danych do tablicy.

1 3 5 3 6
4 3 4 6 6
4 3 5 3 6
3 2 3 6 4
2 6 4 6 7

Mam w pliku .txt zapisana macierz wyglądającą mniej więcej tak jak powyżej. Mój problem polega na tym, że nie wiem jak poszczególne cyfry (bądź liczby) wrzucać do tablicy jednowymiarowej.

Z góry dziękuję za wszelkie rady.

0
Adraj napisał(a)

Mam w pliku .txt zapisana macierz wyglądającą mniej więcej tak jak powyżej. Mój problem polega na tym, że nie wiem jak poszczególne cyfry (bądź liczby) wrzucać do tablicy jednowymiarowej.

Jak chcesz taką tablicę:

1 3 5 3 6
4 3 4 6 6
4 3 5 3 6
3 2 3 6 4
2 6 4 6 7

wpakować do macierzy jednowymiarowej? To jest dwuwymiarowa; Chyba, że chcesz jakieś liczby wybrać spośród tych i skopiować je do macierzy;

Sposobów jest wiele; Przeczytaj linię z pliku, użyj procedury ExtractStrings do rozdzielenia liczb i pętlą dodawaj oddzielone liczby do macierzy;

0

Nie sprecyzowałem tego może zbyt dokładnie. Z tablicą jednowymiarową się nie pomyliłem, bo jeżeli macierz jest 5x5 to chciałbym, by tablica było 25 elementowa. Pierwszy element pierwszego wiersza ma indeks 1 a ostatni ostatniego wiersza 25

0
Adraj napisał(a)

Z tablicą jednowymiarową się nie pomyliłem, bo jeżeli macierz jest 5x5 to chciałbym, by tablica było 25 elementowa.

No to masz ciut trudniej niż w przypadku załadowania tej zawartości pliku do dwuwymiarowej, ale to nie zmienia faktu, że to podstawy podstaw delphi;

Adraj napisał(a)

Pierwszy element pierwszego wiersza ma indeks 1 a ostatni ostatniego wiersza 25

Pierwszy element każdej macierzy powinien mieć indeks 0; Indeksuj jak programista, nie humanista;

Robisz coś? Napisałeś już jakiś kod? Podaj to coś doradzę;

EDIT: Liczby (cyfry) w pliku oddzielaj jakimś specjalnym znakiem, nie spacją... Np. takim:

1|3|5|3|6
4|3|4|6|6
4|3|5|3|6
3|2|3|6|4
2|6|4|6|7

będzie czytelniej i jak wstawisz przypadkiem gdzieś spację to będzie widoczna;

0
Adraj napisał(a)

Witam. Mam drobny problem z wczytywaniem danych do tablicy.

1 3 5 3 6
4 3 4 6 6
4 3 5 3 6
3 2 3 6 4
2 6 4 6 7

Przykład wczytania i wyświetlenia tych liczb w konsoli.

var
  f:TextFile;
  n:Integer;

  AssignFile(f,'liczby.txt');  
  Reset(f);
  while not Eof(f) do
  begin
    Read(f,n);
    Writeln(n);
  end;
  CloseFile(f);
  Readln;

Z wpisaniem tego do tablicy jednowymiarowej chyba sobie poradzisz. Polecam tablicę dynamiczną.

0
pelsta napisał(a)

Polecam tablicę dynamiczną.

To jedyne logiczne rozwiązanie; Chyba, że ilość liczb w pliku jest zawsze stała, to wystarczy tablica statyczna;

Jeżeli chodzi o operacje na macierzach dynamicznych, poczytaj o procedurze SetLength i funkcji High; Będziesz potrzebował ich wykorzystać;

0

Dzięki Panowie za odpowiedź. Wykorzystam to w programie.

Btw, indeksuje od 1 bo tak jest mi potrzebne w programie, ponieważ często numer indeksu wykorzystuje do obliczeń. Wiem, że to mało profesjonalne.

0
Adraj napisał(a)

Btw, indeksuje od 1 bo tak jest mi potrzebne w programie, ponieważ często numer indeksu wykorzystuje do obliczeń. Wiem, że to mało profesjonalne.

Tablice DYNAMICZNE ZAWSZE indeksuje się od 0.

0

Jeżeli chcesz w programie wokorzystać tablicę statyczną, to indeksuj sobie ją jak chcesz, ale jak będzie Ci potrzebna dynamiczna, to tak jak wspomniał @pelsta:

pelsta napisał(a)

Tablice DYNAMICZNE ZAWSZE indeksuje się od 0.

Nie ominiesz tego choćby nie wiem co; Z resztą, jeżeli potrzebny Ci jest indeks tablicy do obliczeń, to chyba nie problem do niego dodać 1; No i będzie się wszystko zgadzało;

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