Помощь - Поиск - Пользователи - Календарь
Полная версия: Добавление символа в конец файла
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NajjZ
вот такая задача:

Описать процедуру:
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;
write(s,c);
после прочтения текста из t и записи его в s операцией write(s,c) записываться С именно в конец текста s

помогите, очень надо. пишите и свои варианты
volvo
Цитата
сообразил два варианта кода, но не знаю будут ли они правильны
Проверь, узнаешь... Что, сложно создать файл и запустить свои процедуры? Заодно расскажи, что такое tekst...

Цитата
пишите и свои варианты
Угу. Напишем. Только после того, как ты приведешь название темы в порядок:
Цитата
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
Тебе кажется, что "Помогите с кодом, нужно проверить" - это информативно? Нажми на кнопку "Изменить" в первом посте, и поменяй название на более корректное.
NajjZ
Цитата(volvo @ 14.01.2009 11:49) *

Заодно расскажи, что такое tekst...



type tekst=file of text
там че хош могло быть

компилировать нет возможности, да и препод все равно порой говорит на рабочии проги что они работать не будут, он их тока на бумаге смотрит...
Archon
type tekst=file of text
У тебя файл получается для хранения переменных типа text. А ты в них пишешь символы. Если хочешь использовать текстовый файл напиши так:
type tekst=text
(без "file of". А лучше вообще не вводи собственный тип и просто используй тип text.

Добавлено через 2 мин.
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;

Я думаю, что тебе надо не символ 'c' записать в конец, а символ из переменной с;

Добавлено через 4 мин.
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;
Жутко надуманный вариант. Еще и работать не будет, потому что файловую переменную s нужно сперва связать с реальным файлом при помощи assign().
NajjZ
не, в задании сказано добавить в конец литеру С, т.е. было йцукен и надо что б стало йцукенС
Archon
Цитата
не, в задании сказано добавить в конец литеру С, т.е. было йцукен и надо что б стало йцукенС

Тогда исправь второй вариант. А вообще, вот:
Цитата
add (t, c), добавляющую литеру с в конец текста t;
Второй параметр процедуры add называется с и судя по твоему коду имеет тип char. Если добавить нужно именно символ 'c', то зачем этот второй параметр?
NajjZ
так в задании было написано, это такое условие. я так понимаю что адд(т,с) - добавить С в Т.

вообще это задание из Пильщикова 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;
write(s,c);
после операций read и write куда C запишется в S??
Archon
Цитата
так в задании было написано, это такое условие. я так понимаю что адд(т,с) - добавить С в Т.
Вот и добавляй содержимое параметра C в T. А вообще, поступай как знаешь, это же твое задание.
volvo
А что, обязательно надо открыть файл и прочитать его с начала до конца, вместо вот такого, например:

procedure add(var t: text; c: char);
begin
append(t); write(t, c); close(t);
end;

?

NajjZ
Тему я переименовал, но в следующий раз будь внимателен при выборе названия...
NajjZ
volvo, спасибо что открыл, теперь уж буду внимательней и уже с опытом ))))) твой совет меня устраивает, впринципе так должно работать. спасибо за совет good.gif

тока надо вместо write(t, c) писать write(t, 'c')
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.