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

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

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

 
 Ответить  Открыть новую тему 
> Файлы, удалить все нулевые компоненты
freak
сообщение 21.11.2007 17:18
Сообщение #1


Гость






В общем задачка... Ввести файл F целых чисел и выдать его на печать. Удалить из него все компоненты, равные нулю (вспомагательный файл не использовать). Решите плз, очень прошу... mega_chok.gif
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.11.2007 17:32
Сообщение #2


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

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

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


то есть сам хоть какие-то усилия предпринять ты не готов?..


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


Гость






Честно отвечу, что нет... но очень надеюсь на вашу помощь...
 К началу страницы 
+ Ответить 
Sozialist
сообщение 22.11.2007 4:41
Сообщение #4


Клавиатурный тиран
**

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

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


Записываешь в файл и вектор одновременно, выводишь из файла, удаляешь из вектора нули, стираешь содержимое файла, записываешь из вектора, например. А еще лучше сразу с условием записывать в вектор только ненулевые элементы. Тут делов на 2 минуты
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.11.2007 8:17
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Sozialist @ 22.11.2007 4:41) *

Записываешь в файл и вектор одновременно, ...

Sozialist, что ты называешь вектором? массив?
Хорошо, а если файл на на пару гигов - тогда как? smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sozialist
сообщение 22.11.2007 9:56
Сообщение #6


Клавиатурный тиран
**

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

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


Lapp
Пусть текстовый smile.gif Я не могу представить файл на 2 гига blink.gif на деле
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.11.2007 10:08
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Sozialist @ 22.11.2007 9:56) *

Пусть текстовый smile.gif Я не могу представить файл на 2 гига blink.gif на деле
Нет, текстовых у меня таких нет. А бинарных - полно.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sozialist
сообщение 22.11.2007 13:25
Сообщение #8


Клавиатурный тиран
**

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

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


Ну а какие тогда структуры использовать? Я не встречался с подобным переполнением.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.11.2007 13:36
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


А никакие smile.gif. Только сам файл.
Можно, например, так:
var
f:file of integer;
i,j,k,s:LongInt;
z:boolean;

begin
Assign(f,'t');
ReSet(f);
i:=0;
j:=0;
z:=false;
s:=FileSize(f);
while j<s do begin
Seek(f,j);
Read(f,k);
if k<>0 then begin
if z then begin
Seek(f,i);
Write(f,k)
end;
Inc(i)
end
else z:=true;
Inc(j);
end;
Seek(f,i);
Truncate(f);
Close(f)
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sozialist
сообщение 22.11.2007 18:45
Сообщение #10


Клавиатурный тиран
**

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

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


Отлично! Забыл про truncate mega_chok.gif Единственное, что мне не нравится - то, что файл может увеличиться, например, вдвое, принимая во внимание огромные размеры, это может вызвать определенные проблемы. Я бы предложил делать проверку не на ненулевые элементы, а на нулевые, тогда вероятность того, что файл увеличится вдвое, будет меньше.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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