![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Знак |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
Столкнулся с проблемой
подскажите пожалуйста по следующему вопросу. Есть поток из файла все нормально читаем get() записываем put() Нужно мне следующее найти повторения знаков в потоке и уменьшить их до одного! к примеру поток "фкаюдролвапжФФФФФФФФФюлоажожыдва" здесь повторяються букввы "Ф", как удалить лишние и оставить только одну "Ф" ? Мне удалось их только перезаписать другим символом но сам поток укоротить не удалось. Есть ли функция для подрезания потока? Что бы не мучить проц перезаписью в массив и в файл? ![]() --------------------
Ищу 2 файлаowl.tchwindows.tch |
|||
|
||||
Знак |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
Смотрел remuve()
не годиться! может кто алгоритм напишет? --------------------
Ищу 2 файлаowl.tchwindows.tch |
|||
|
||||
vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
Попробуй например через fwrite записать 0 байт.
С потоками не пробовал, но при использовании функции write работает 100%. Вот только в чем же мучение открыть другой поток и туда валить результат ??? Наоборот более надежно - если в процессе работы например отключиться электричество ты сохранишь исходный набор данных -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Знак
Приведи код, как читаешь. Так вообще не вижу в задаче ничего сложного - запоминай последний введенный символ, и если он совпадает - игнорируй. -------------------- Волны гасят ветер... |
|||
|
||||
Знак |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
9 vadims - 0 байт и останется в файле? т.е.
был поток "фкаюдролвапжФФФФФФФФФюлоажожыдва" станет "фкаюдролвапжФ00000000юлоажожыдва" нулики конечно видно не будет. , а мне надо "фкаюдролвапжФюлоажожыдва" - только вот как так сделать?
Я пытаюсь сделать так чтобы файл переделался, без указания файла выхода. 9 Fantasist - мой код к примеру
КАК ВЫРЕЗАТЬ ЛИШНЕЕ зная начало и конец того что хочу удалить? --------------------
Ищу 2 файлаowl.tchwindows.tch |
||||
|
|||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Знак
Тяжело тебя понять.
Откуда вырезать? Из потока ввода с клавиатуры? В него попадает все, что нажимает пользователь - тут тебе надо клавиатурный драйвер, либо перехватывать обработку нажатия клавиш. Не думаю, что тебе захочется этим заниматься. Зачем вырезать, когда можно просто не записывать? Это сообщение отредактировал(а) Fantasist - 16.6.2005, 00:37 -------------------- Волны гасят ветер... |
|||
|
||||
Знак |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
был поток "фкаюдролвапжФФФФФФФФФюлоажожыдва"
я при помощи за раз прогона
определяю начало повторов и конец строки повторов при помощи start так вот как за этот раз прогона мне умудрится еще и выкинуть ненужные символы? Игнорировать символы потока это как? здесь я применял технику смещения на позицию начала при выводе в новый файл, только так я это вижу.... А вообще читай внимательней! Это весьма глючно и криво выходит.. напиши как ты представляешь себе конструкцию предлагаемою тобой. очень интересно. при том что условий чё где удалять и вводить у меня поболее чем просто замена пробелов на буку "А" к примеру. Еще проблема никак немогу организовать в классы все что понаписал, почти даже не могу представить как это будет выглядеть с потоками ввода вывода.... --------------------
Ищу 2 файлаowl.tchwindows.tch |
|||
|
||||
vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
1. Записать 0 байт - имелось в виду записать байтов количеством ноль штук, а не нулевые коды
Повторюсь что с потоками это не делал, а конструкция lseek( fil, newsize, 0 ); write( fil, "", 0 ); работает 2. ну что ты нашел за проблему while( !eof ) { ch = inp.get() if ( символ нам нужен) outp.put(ch); } пишу на псевдокоде, тк лень смотреть потоковые функции Добавлено @ 07:32
Да забыл сказать как решить эту "проблему" Создаешь левый файл типа "@@&&!!&&.tmp", пишешь результат туда, потом удаляешь старый(входной), а 'левый' переименовываешь в него -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
Знак |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
Нуууууууу и как вы представляете себе словарь по определению нужных символов? В ГИГАБАЙТАХ ? ![]() Легче написать какие символы не нужны чем перечислять какие нужны! ![]() У меня if как минимум 3 раза повторяеся ( для определения нужной строки ) а ты мне их в скобки поместить предлагаешь! if ( If (){};If (){};If (){}; ) {null} else {null}
Повтарюсь Я поначалу за один прогон все сделать хотел... поэтому и споросил как укоротить поток? Смещением криво выходит... А вот функция помоглабы...
Читай внимательней. ( Если вообще в С++ Borland 3.1 понимаешь! ) ![]() ![]() ![]() ![]() ![]() --------------------
Ищу 2 файлаowl.tchwindows.tch |
||||||
|
|||||||
Знак |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
Люди вы Где?
кто знает ? --------------------
Ищу 2 файлаowl.tchwindows.tch |
|||
|
||||
vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
1. Выше тебе была дана вся необходимая информация
Если же ты знаешь как сформулировать условие при котором символ не нужен и не в состоянии из него сделать условие нужности, то тебе всерьез нужно подумать о том стоит ли тратить время на программирование. хотя бы в лоб: if ( символ ch не нужен ) ; // ничего не делаем, потому-что символ не нужен else file.put(ch); // пишем нужный символ в выходной поток, потому- // символ нужен а по хорошему есть такое понятие как законы Моргана 2. Прежде чем кого-то обвинять, что он читает невнимательно - прочитал бы сам что ты пишешь - неграмотно и абсолютно невнятно НИКТО ТЕБЕ НИЧЕГО НЕ ОБЯЗАН, в том числе и разбираться что ты хотел сказать 3. Хочу тебя 'поблагодарить', что подсказал мне что я в примере забыл указать поток Хотя стаж в программировании у меня больше 13 лет, меня это не обидело, а даже развеселило. Но вот фраза: "Читай внимательней. ( Если вообще в С++ Borland 3.1 понимаешь! ) " обращенная к Fantasist меня возмутила до глубины души а. тебе пытаются помочь и это тебе оказывается услуга, то ты ему должен, а не он обязан читать внимательней твой лепет уровня первого класса школы для особо одаренных б. указав на С++ Borland 3.1 ты пытался показать владение новейшими инструментами от Borland'а что-ли ??? в. прежде чем спрашивать - понимает ли человек вообще что-нибудь ты бы хоть посмотрел на информацию о нем - ту что справа от сообщения, а лучше бы его профиль , а потом на свой Вообщем, уверен что ни один грамотный человек, увидев эту ветку не будет тебе помогать. Так что молись чтобы модератор не дал на нее ссылку как на то что не надо делать Я дал тебе пару советов по твоей задаче (как мне кажется по сути) и надеюсь что заслужил право дать один по жизни: Извинись перед Fantasist и здесь и через личное сообщение(или email). Впрочем как знаешь - тебе жить -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
Знак |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
Это был ФЛЭЙМ??? или провакация?
Чел еслиб ты 13 лет програмировал тыб не писал таких длинных и не относящихся к вопросу сообщений, а КОДом С++ отвечал... И тебя бы все поняли .... А когда ты даже поток на eof() .... забываешь написать ты уж поясняй .... че это .... за eof().... и не надейся что тебя будут понимаь одноЗНАЧНО... _)) В твой профайл глядеть не стану.... т.к. там правды и 1% нет .....
Это только мне решать!!! У вас 23 сообщения А форсу на все 2222 месседжеф ![]() ![]() ![]() ![]() Я попросил бы вас и вообще прежде чем что либо написать подумать! о том стоит ли ![]()
В С++ 3.1 файл можно открывать одновременно для чтения из него и записи в него. Что я и сделал! fstraem io( "name", ios::in | ios::out | ios::binary );
Это ты на С++ написал? компилятор С++ тебя непоймет! И я непонимаю что сие значит.. --------------------
Ищу 2 файлаowl.tchwindows.tch |
||||||||
|
|||||||||
Fantasist |
|
||||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
vadims ![]()
Вообще-то расчет был на то, что это будет читать человек, у которого есть голова для анализа подобного текста. Кто же знал, что есть такие интеллектуальные компиляторы, что уже могут на форуме общатся. Отсюда, наверное, такое неуверенное владения русским языком: все-таки компилятору человеческие языки должны доваться тяжело.
Хорошо, разбирайся тогда сам. Это сообщение отредактировал(а) Fantasist - 17.6.2005, 19:26 -------------------- Волны гасят ветер... |
||||||
|
|||||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Знак,
"укорачивать" поток ввода идеологически неправильно. Потому что поток - это, по определнию, контейнер со строго последовательным доступом, причем одноразовым. Конечно, в основе потока может лежать контейнер с произвольным доступом, но далеко не всегда. Например, как уже говорилось выше, поток ввода с клавиатуры. Так что задача просто неправильно поставлена. Надо либо копировать поток с критерием, либо прямо доступаться к нижележащему контейнеру (если таковой есть) и честно ковыряться в нем. -------------------- ... |
|||
|
||||
vadims |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
Опыт, это то, что мы получаем, когда не получаем желаемого Приношу Вам свои глубочайшие извинения ! Это был не ФЛЭЙМ и уж тем более не пров
Просто мое скромное мнение. Надеюсь меня хоть немного оправдает, хотя бы то что я искренне хотел помочь и не сказал ни одного грубого слова.
Я между прочим и не козырял своими заслугами и тем более своим профилем, тк 1. на этом форуме я около месяца 2. предыдущие год-два я вообще занимался вещами далекими от программирования (мне стыдно ![]() . . . чтобы не разводить флейм не буду уж реагировать на все послулаты . . .
А вот это не в бровь, а в глаз - я понял что отстал, да и вообще никогда не решал такие сложные промышленные задачи, поэтому чтобы не отвлекать Вас от проблемы своими непродуманными мыслями и косноязычными высказываниями - сейчас отпишусь от этой темы и в печали и унынии от собственной никчемности пойду пить пиво. Удачи и приятных выходных. -------------------- Cpu not found ! Press any key for software emulation. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |