IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> файлы, прямого доступа
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


задачка такая удалить из файла с нечетным количеством элементов тот который находится посередине у мне прога почти готова но понять не могу в чем ошибка


program file_1;
uses crt;
var f: file of byte;
k,i,y,n,x: byte;
begin
begin
{создание файла}
randomize;
clrscr;
assign(f,'a:\aaa.bbb');
rewrite(f);
for i:=1 to 19 do
begin
n:=random(99);
write(n,' ');
end;
writeln;
close(f);
end;

{удаление среднего элемента}

begin
assign(f,'a:\aaa.bbb');
reset(f);
x:= filesize(f);
k:=((x div 2)+1);
for i:=k to (filesize(f)-1) do
begin
seek(f,i);
read(f,y);
seek(f,i-1);
write(f,y);
end;
truncate(f);
write(y,' ');
close(f);
end;
End.



ps частьв которой идет создание файла я задавал массивом и его уже писал в файл все работало
эту часть я изменил вторую не трогал

Сообщение отредактировано: Hunt666 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


1. обязательно надо с дискетой работать? или у тебя на а что-то другое привешено?
2. процитируй, пожалуйста, строчку, где идет первоначальная запись в файл. я ее не нашла...

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Цитата(мисс_граффити @ 18.02.2007 15:25) *

1. обязательно надо с дискетой работать? или у тебя на а что-то другое привешено?
2. процитируй, пожалуйста, строчку, где идет первоначальная запись в файл. я ее не нашла...



куда писать файл не важно ( просто так искать удобнее)
первоначальное создание файла идет в

begin
{создание файла}
randomize;
clrscr;
assign(f,'a:\aaa.bbb');
rewrite(f);
for i:=1 to 19 do
begin
n:=random(99);
write(n,' ');
end;
writeln;
close(f);
end;



Сообщение отредактировано: Hunt666 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


я тебя что попросила сделать?
показать мне строчку, где элементы пишутся в файл.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Цитата(мисс_граффити @ 18.02.2007 15:41) *

я тебя что попросила сделать?
показать мне строчку, где элементы пишутся в файл.

ошибку увидел вот что получилось
 
program file_1;
uses crt;
var f: file of byte;
k,i,y,n,x: byte;
begin
begin
{создание файла}
randomize;
clrscr;
assign(f,'a:\aaa.bbb');
rewrite(f);
writeln('файл состоит из элементов:');
for i:=1 to 19 do
begin
n:=random(50);
write(f,n);
write(n,' ');
end;
writeln;
close(f);

end;

{удаление среднего элемента}

begin
assign(f,'a:\aaa.bbb');
reset(f);
x:= filesize(f);
k:=((x div 2)+1);
for i:=k to (filesize(f)-1) do
begin
seek(f,i);
read(f,n);
seek(f,i-1);
write(f,n);
end;
truncate(f);
close(f);
end;
End.



тока вот теперь у меня не получается вывести на экран что находится в файле (конечном)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


а где ты пытаешься вывести?
что именно не получается?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Цитата(мисс_граффити @ 18.02.2007 16:34) *

а где ты пытаешься вывести?
что именно не получается?

пытался после truncate но выводит тока последний элемент
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






После Truncate делай Reset, и только потом пытайся вывести данные...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Естественно. После truncate указатель где, по-твоему? Явно ведь не на начале файла...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +



truncate(f);
writeln;
readln;
reset(f);
writeln('файл стал');
while not eof(f) do
begin
read(f,y);
write(y,' ');
end;
writeln;
readln;
close(f);



вот что я после truncate добавил ,все работает ,спасибо всем кто помогал
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


т.к. делал прогу по аналогии то не совсем понял что происходит вот в этом месте

for i:=k to (filesize(f)-1) do
begin
seek(f,i);
read(f,n);
seek(f,i-1);
write(f,n);
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Сдвигаешь на единицу все элементы файла начиная с середины, тем самым замещая (удаляя) центральный элемент..

Добавлено через 3 мин.
PS Поздравляю себя с 1000 сообщением !thanks.gif (почти volvo догнал smile.gif )


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 8:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name