Skocz do zawartości

[PASCAL] wczytywanie liczb z pliku do tablicy


rafal92909

Polecane posty

Witam wszystkich mam problem z napisaniem programu w Pascalu który wczyta wszystkie liczby z pliku txt do tablicy dwuwymiarowej. Niby coś napisałem ale nie do końca działa jak powinno, ponieważ wypisuje tylko pierwszy wiersz z tablicy a cala reszta jest pusta. Chce aby liczby w tablicy wyglądały tak samo jak pliku tekstowym (czyli 228 wierszy i 13 kolumn)

 

 

program p1;
uses crt;
type
   T2W=array [1..228,1..13] of string;
var
  t:text;
  w:string;
  i,j:integer;
  T1:T2W;

begin
  assign(t, 'C:\temp.txt');
  reset(t);
     for i:=1 to 228 do
        for j:=1 to 13 do
        begin
           read(t,w);
           T1[i,j]:=w;
        end;

     close(t);
     writeln('liczby w tablicy');
     writeln();

     for i:=1 to 228 do
     begin
        for j:=1 to 13 do
        begin
           write(T1[i,j]);
        end;
        writeln();
     end;
  readln;
end.

 

 

plik txt który wczytuje znajduje się: TUTAJ

 

czy zmienna w i tablicy nie powinny być zdeklarowane jako liczby rzeczywiste jeśli później chciałbym np sumować liczy z kolumn? Gdy zmienię deklaracje na real to kompilator nie widzi żadnego błędu ale od razu się zamyka. Proszę o pomoc.

Link do komentarza
Udostępnij na innych stronach

Nie wczytujesz do tablicy pojedynczych liczb, tylko całe wiersze, więc nie działa prawidłowo, a program się zamyka dlatego, że natknął się na błąd podczas wykonania. Jeżeli zmieniasz typ zmiennej w i T1 na rzeczywisty i jest błąd, to prawdopodobnie w pliku powinny być kropki a nie przecinki. Spróbuj jeszcze nadać typ Single tym zmiennym, a przy wczytywaniu zmień kod na:

 

  for i:=1 to 228 do
  begin
     for j:=1 to 13 do
     begin
        read(t,w);
        T1[i,j]:=w;
     end;
     readln;
  end;

 

Może to pomoże.

Etharnion - 2D RPG

Szukam grafika chętnego do współpracy przy projekcie.

Link do komentarza
Udostępnij na innych stronach

nie robie na stringach bo jak tylko zmienie zmienne na real to odrazu po otwarciu program sie zamyka program

 

program p1;
uses crt;
type
   T2W=array [1..228,1..13] of string;
var
t:text;
  w:string;
  i,j:integer;
  T1:T2W;

begin
  assign(t, 'C:\temp.txt');
  reset(t);
  for i:=1 to 228 do
  begin
     for j:=1 to 12 do
     begin
        read(t,w);
        T1[i,j]:=w;
     end;
     readln(t,w);
     T1[i,13]:=w;
  end;

  close(t);
  writeln('liczby w tablicy');
  writeln();

  for i:=1 to 228 do
  begin
     for j:=1 to 13 do
     begin
        write(T1[i,j]);
     end;
     writeln();
  end;
  readln;
end.

Link do komentarza
Udostępnij na innych stronach

Zamień wszystkie przecinki w pliku tekstowym na kropki, powinno działać. Jeżeli chcesz liczby w osobnych komórkach tablicy to nie można tego zrobić na stringach.

 

zmienilem na kropki i jak zmieniam na stringi na reale to kompilator nie wykrywa bledu ale po wlaczeniu programu od razu sie wylacza (tak jakby nie mial readln; na koncu) i nie wiem co mu sie jeszcze nie zgadza

Link do komentarza
Udostępnij na innych stronach

begin
 assign(t, 'C:\temp.txt');
 reset(t);
 for i:=1 to 228 do
 begin
    readln(t,w);           {wczytuje cały wiersz z pliku tekstowego}
   for j:=1 to 12 do
   begin
      while w[1]=' ' do delete(w,1,1); {usuwa spacje na początku wiersza}
      T1[i,j]:=copy(w,pos(' ',w)-1);  {wstawia do tablicy fragment wiersza do pierwszej napotkanej spacji}
      delete(w,1,pos(' ',w));             {usuwa z wiersza to co wstawił do tabeli, razem ze spacją}
   end;
 end;
 close(t);
end;

 

Coś w tym stylu. Sprawdź tylko, czy w funkcjach copy i delete powinny być -1 za funkcjami copy.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...