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

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

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

 
 Ответить  Открыть новую тему 
> файлы, прямого доступа
Hunt666
сообщение 18.02.2007 15:11
Сообщение #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 - 18.02.2007 15:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.02.2007 15:25
Сообщение #2


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

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

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


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

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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Hunt666
сообщение 18.02.2007 15:32
Сообщение #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 - 18.02.2007 15:33
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.02.2007 15:41
Сообщение #4


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Hunt666
сообщение 18.02.2007 16:16
Сообщение #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 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 18.02.2007 16:34
Сообщение #6


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

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

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


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


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


Пионер
**

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

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


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

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

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


Гость






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


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Hunt666
сообщение 18.02.2007 17:10
Сообщение #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 
 К началу страницы 
+ Ответить 
Hunt666
сообщение 25.02.2007 19:12
Сообщение #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 
 К началу страницы 
+ Ответить 
Bokul
сообщение 25.02.2007 19:17
Сообщение #12


Гуру
*****

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

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


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

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


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

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

 



- Текстовая версия 29.04.2024 12:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"