Добавил:
Mendeleev
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
(* жХОЛГЙС getoccupier РПМХЮЙФШ ЖБНЙМЙА ЙЪ ЖБКМБ residents *)
uses linux;
const
NAMELENGTH=41;
var
namebuf:array [0..NAMELENGTH-1] of char; (* вХЖЕТ ДМС ЖБНЙМЙЙ *)
const
infile:integer=-1; (* дМС ИТБОЕОЙС ДЕУЛТЙРФПТБ ЖБКМБ *)
function getoccupier(roomno:integer):pchar;
var
offset, nread:longint;
begin
(* хВЕДЙФШУС, ЮФП ЖБКМ ПФЛТЩЧБЕФУС ЧРЕТЧЩЕ *)
if infile = -1 then
begin
infile := fdopen ('residents', Open_RDWR);
if infile = -1 then
begin
getoccupier := nil; (* оЕЧПЪНПЦОП ПФЛТЩФШ ЖБКМ *)
exit;
end;
end;
offset := (roomno - 1) * NAMELENGTH;
(* оБКФЙ РПМЕ ЛПНОБФЩ Й УЮЙФБФШ ЖБНЙМЙА ЦЙМШГБ *)
if fdseek (infile, offset, SEEK_SET) = -1 then
begin
getoccupier := nil;
exit;
end;
nread := fdread (infile, namebuf, NAMELENGTH);
if nread <= 0 then
begin
getoccupier := nil;
exit;
end;
(* уПЪДБФШ УФТПЛХ, ЪБНЕОЙЧ УЙНЧПМ РЕТЕЧПДБ УФТПЛЙ ОБ '\0' *)
namebuf[nread - 1] := #0;
getoccupier := namebuf;
end;
(* рТПЗТБННБ listoc ЧЩЧПДЙФ ЧУЕ ЖБНЙМЙЙ ЦЙМШГПЧ *)
const
NROOMS=10;
var
j:integer;
p:pchar;
begin
for j := 1 to NROOMS do
begin
p := getoccupier (j);
if p<>nil then
writeln('лПНОБФБ ', j:2, ', ', p)
else
writeln('пЫЙВЛБ ДМС ЛПНОБФЩ ', j);
end;
end.
uses linux;
const
NAMELENGTH=41;
var
namebuf:array [0..NAMELENGTH-1] of char; (* вХЖЕТ ДМС ЖБНЙМЙЙ *)
const
infile:integer=-1; (* дМС ИТБОЕОЙС ДЕУЛТЙРФПТБ ЖБКМБ *)
function getoccupier(roomno:integer):pchar;
var
offset, nread:longint;
begin
(* хВЕДЙФШУС, ЮФП ЖБКМ ПФЛТЩЧБЕФУС ЧРЕТЧЩЕ *)
if infile = -1 then
begin
infile := fdopen ('residents', Open_RDWR);
if infile = -1 then
begin
getoccupier := nil; (* оЕЧПЪНПЦОП ПФЛТЩФШ ЖБКМ *)
exit;
end;
end;
offset := (roomno - 1) * NAMELENGTH;
(* оБКФЙ РПМЕ ЛПНОБФЩ Й УЮЙФБФШ ЖБНЙМЙА ЦЙМШГБ *)
if fdseek (infile, offset, SEEK_SET) = -1 then
begin
getoccupier := nil;
exit;
end;
nread := fdread (infile, namebuf, NAMELENGTH);
if nread <= 0 then
begin
getoccupier := nil;
exit;
end;
(* уПЪДБФШ УФТПЛХ, ЪБНЕОЙЧ УЙНЧПМ РЕТЕЧПДБ УФТПЛЙ ОБ '\0' *)
namebuf[nread - 1] := #0;
getoccupier := namebuf;
end;
(* рТПЗТБННБ listoc ЧЩЧПДЙФ ЧУЕ ЖБНЙМЙЙ ЦЙМШГПЧ *)
const
NROOMS=10;
var
j:integer;
p:pchar;
begin
for j := 1 to NROOMS do
begin
p := getoccupier (j);
if p<>nil then
writeln('лПНОБФБ ', j:2, ', ', p)
else
writeln('пЫЙВЛБ ДМС ЛПНОБФЩ ', j);
end;
end.
Соседние файлы в папке 2