Witam, tak jak w temacie, mój problem polega na wczytywaniu plików.
Otóż mam dane w takiej formie:
1779 -4,9 2,2 3,8 9,5 15,4 16,4 17,9 19,5 14,7 9,3 4,1 1,4
1780 -5,1 -4,3 4,4 5,9 14,2 17,2 19,4 17,9 13,1 9,4 2,8 -4,6
1781 -4,0 -1,9 1,5 9,1 13,8 19,2 20,1 22,8 16,2 6,0 4,0 -3,6
I piknię mi wszystko działa tylko bez jednej rzeczy, ostatniej danej. Dlaczego? Co mam źle? Następny wiersz jest oczywiście nowymi osobnymi danymi.
program wczytywanieplikow;
uses crt;
Var
plik1:text; //wskazanie na plik
plik2:text;
linia:string; //pobieranie calego wierszu z pliku do programu
dane:array[1..1000] of string; //przechowywanie tego co mamy wywalic w
//zapisywaniu
x:integer; //licznik w petli
i:integer; // licznik w petli
y:integer; //dlugosc w liczbie ciagu znakowego
poczatek:integer; //DO wyciagania z stringu potrzebnych danych
koniec:integer; //poczatek i koniec potrzebnego strigu
sredniatemperatura:real; //srednia temperatura
temperatura:real; // przechowuje aktualana temperature
czyrok:integer; //Czy wczytujemy rok czy temperature
temp:string; //zamienia temperature z stringa na liczbe
temp1:integer; //temperatura jako string
rok:string; // przechowuje informacje o danym roku z wierszu
temp3:integer; //czy poprawnie zamienil, wymagane przez
//funkcje, w programie nie wykorzystany
stringsrtemp:string; // przechowuje srednia temperatur jako string
Begin
assign(plik1, 'C:\zadanie\temp.txt');
reset(plik1);
poczatek:=0; y:=0;
ClrScr;
dane[1]:='';
repeat
readln(plik1,linia);
y:=length(linia);
for x:=1 to y do
begin
if(linia[x]=',') then linia[x]:='.';
end;
i:=1;
poczatek:=1;
while(y>i) do
begin
if(linia[i]=' ') then
begin
koniec:=i;
if(czyrok=0) then
begin
writeln(koniec-poczatek);
rok:=copy(linia,poczatek,koniec-poczatek);
writeln(rok);
czyrok:=1;
end
else
begin
temp:=copy(linia,poczatek,koniec-poczatek);
val(temp,temperatura,temp3);
write(temperatura:5:2); write(' ');
sredniatemperatura:=sredniatemperatura+temperatura;
end;
poczatek:=koniec;
write ('Y: '); writeln(y);
write('Poczatek: '); writeln(poczatek);
write('Koniec: '); writeln(koniec);
readln;
end;
if(czyrok=1) then
begin
sredniatemperatura:=sredniatemperatura/12;
str(sredniatemperatura:4:2,stringsrtemp);
dane[x+1]:=rok+' '+stringsrtemp;
sredniatemperatura:=0;
czyrok:=0;
end;
i:=i+1;
end;
UNTIL EOF(plik1);
close(plik1);
assign(plik2, 'C:\zadanie\zadanie.txt');
rewrite(plik2);
x:=1;
while(not(dane[x]='')) do
begin
writeln(plik2,dane[x]);
writeln(dane[x]);
x:=x+1;
end;
close(plik2);
readln;
End.