вот такая задача:
Описать процедуру:
add (t, c), добавляющую литеру с в конец текста t;
сообразил два варианта кода, но не знаю будут ли они правильны
procedure add (var t:tekst; c:char);
var x:char;
begin
append (t);
repeat read(t,x);
until not eof(t);
x:='c';
write(t,x);
close(t);
end
procedure add(var t:tekst; c:char);
var d:char; s:tekst;
begin
reset(t); rewrite(s);
while not eof(t) do
begin read(t,d); write(s,d) end;
write(s,c);
reset(s); rewrite(t);
while not eof(s) do
begin read(s,d); write(t,d) end
end;
begin read(t,d); write(s,d) end;после прочтения текста из t и записи его в s операцией write(s,c) записываться С именно в конец текста s
write(s,c);
type tekst=file of textУ тебя файл получается для хранения переменных типа text. А ты в них пишешь символы. Если хочешь использовать текстовый файл напиши так:
type tekst=text(без "file of". А лучше вообще не вводи собственный тип и просто используй тип text.
procedure add (var t:tekst; c:char);
var x:char;
begin
append (t);
repeat read(t,x);
until not eof(t);
x:='c';
write(t,x);
close(t);
end;
procedure add(var t:tekst; c:char);Жутко надуманный вариант. Еще и работать не будет, потому что файловую переменную s нужно сперва связать с реальным файлом при помощи assign().
var d:char; s:tekst;
begin
reset(t); rewrite(s);
while not eof(t) do
begin read(t,d); write(s,d) end;
write(s,c);
reset(s); rewrite(t);
while not eof(s) do
begin read(s,d); write(t,d) end
end;
не, в задании сказано добавить в конец литеру С, т.е. было йцукен и надо что б стало йцукенС
так в задании было написано, это такое условие. я так понимаю что адд(т,с) - добавить С в Т.
вообще это задание из Пильщикова 15.21 б)
в нем есть ответ для процедуры, которая добавляет литеру С в начало текста Т:
вот такой прям там был ответ
procedure add(var t:tekst; c:char);
var d:char; s:tekst; {вспомагательный файл}
begin {копирование Т в С}
reset(t); rewrite(s);
while not eof(t) do
begin read(t,d); write(s,d) end;
{запись Ц и С в Т}
reset(s); rewrite(t);
write(t,c);
while not eof(s) do
begin read(s,d); write(t,d) end
end
begin read(t,d); write(s,d) end;после операций read и write куда C запишется в S??
write(s,c);
А что, обязательно надо открыть файл и прочитать его с начала до конца, вместо вот такого, например:
procedure add(var t: text; c: char);
begin
append(t); write(t, c); close(t);
end;
volvo, спасибо что открыл, теперь уж буду внимательней и уже с опытом ))))) твой совет меня устраивает, впринципе так должно работать. спасибо за совет
тока надо вместо write(t, c) писать write(t, 'c')