SÜRGŐS! , PASCAL, Mi lehet a hiba?
Hibát ír ki futtatáskor(exitcode=216), elvileg a tömbbe olvasásnál van hiba, de mi lehet az?
itt van a forrás:
program rekordsum;
uses crt;
const n=10;
type tsum=record
az:integer;
ez:string;
end;
ttomb=array[1..n] of tsum;
var x:ttomb;
f:text;
Procedure init;
begin
assign(f,'reksum.txt');
end;
Procedure olvas(var y:ttomb);
var i:integer;
begin
reset(f);
while not EOF(f) do
begin
read(f,y[i].az,y[i].ez);
writeln(y[i].az,y[i].ez);
end;
close(f);
end;
Procedure sum(z:ttomb);
var i,s:integer;
begin
s:=0;
for i:=1 to 5 do
begin
s:=s+z[i].az;
end;
writeln(s);
end;
BEGIN
clrscr;
init;
olvas(x);
sum(x);
readln;
END.
Itt találsz infót, mit jelent a 216-os hiba:
Az olvas eljárásban az i értéke nem változik és kezdőérték sincsen neki adva, így tehát a tömb i-edik micsoda is lesz?
Aztán mi van a reksum.txt-ben?
AZ olvas eljárást írd át így:
Procedure olvas(var y:ttomb);
var i:integer;
begin
i:=1;
reset(f);
while not EOF(f) do
begin
read(f,y[i].az,y[i].ez);
writeln(y[i].az,y[i].ez);
inc(i);
end;
close(f);
end;
"de ha egy több száz adatsort akarok tömbbe olvasni akkor kell egy kb 1000-es méretű tömb és mivel nem fogom megszámolni muszáj EOF nem?"
A program meg tudja neked számolni. A cikluson belül. Kolléga javított olvas procedúrájában az i megmondja, hány elemed van. A while-ba pedig beleírhatod, hogy addig olvasson, amíg az i nem haladja meg n-et. Máris nem fogsz túlcsordulni. :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!