rafal92909 Posted October 25, 2010 Report Share Posted October 25, 2010 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 to comment Share on other sites More sharing options...
Adam27 Posted October 25, 2010 Report Share Posted October 25, 2010 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 to comment Share on other sites More sharing options...
rafal92909 Posted October 25, 2010 Author Report Share Posted October 25, 2010 niestety nadal to samo wkleilem twoj kawalek kodu (bez readln; bo musialem enter klikac) i jest to samo. a po zmianie typu zmiennej w i tablicy na single dzieje sie to samo co przy typie real czyli kompilator nie widzi bledow wlacza sie program i od razu wysypuje. Link to comment Share on other sites More sharing options...
Adam27 Posted October 25, 2010 Report Share Posted October 25, 2010 Z tym readln to chodziło o to, żeby przy wczytywaniu pliku przechodziło do następnej linijki, ale moja wina, zrób tak: 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; Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
rafal92909 Posted October 25, 2010 Author Report Share Posted October 25, 2010 pozornie dziala bo wyswietla na ekranie tak jak powinno, ale chodzilo mi o to by w kazdym miejscu w tablicy byla jedna ze liczb. a miejsca wkolumnach od 2-13 sa puste a wypelniona jest cala kolumna pierwsza calym wierszem z pliku tekstowego. a nie o to chodzilo. czy wiesz jak to poprawic? Link to comment Share on other sites More sharing options...
Adam27 Posted October 25, 2010 Report Share Posted October 25, 2010 A zmienne w i T1 są typu rzeczywistego? Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
rafal92909 Posted October 25, 2010 Author Report Share Posted October 25, 2010 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 to comment Share on other sites More sharing options...
Adam27 Posted October 25, 2010 Report Share Posted October 25, 2010 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. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
rafal92909 Posted October 25, 2010 Author Report Share Posted October 25, 2010 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 to comment Share on other sites More sharing options...
Adam27 Posted October 25, 2010 Report Share Posted October 25, 2010 No to użyj debuggera i zobacz w którym momencie program się wywala. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
rafal92909 Posted October 25, 2010 Author Report Share Posted October 25, 2010 No to użyj debuggera i zobacz w którym momencie program się wywala. chodzi Ci o uzycie funkcjiu debug w kompilatorze? to po uzyciu jej wyskakuje dosowskie okienko w ktorym pisze "wiersz wprowadzenia jest za dlugi" i szybko znika Link to comment Share on other sites More sharing options...
jozekkg Posted October 26, 2010 Report Share Posted October 26, 2010 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 to comment Share on other sites More sharing options...
Adam27 Posted October 26, 2010 Report Share Posted October 26, 2010 @rafal92909: Ustaw breakpoint i zobacz w której linijce jest błąd. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.