Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
#1

Поиск повторяющихся символов в тексте и удаление таких строк - C++

06.10.2015, 14:16. Просмотров 633. Ответов 23
Метки нет (Все метки)

нужен готовый .exe.
Есть .txt файлы, в нем нужно по удалять строчки - где какой либо символ повторяется больше 2, 3 раз и т.д.
пример: нужно удалить вот такие строчки (в данном случае символ "1") - qw1t1, i1pk1O1, 1Pa01, 1GV1bn1nbg1.

были предложены код на основе Perl:
perl -pe "my %h; undef $_ if grep{ $h{$_} >= 4 }map{ $h{$_}++;$_ }split//" 00.txt > 01.txt = чистит один файл
for %j in ( *.txt ) do @perl -i.old -pe "my %h; undef $_ if grep{ $h{$_} >= 4 }map{ $h{$_}++;$_ }split//" %j = чистит папку
но один файл 1Гб чистится около суток. (файлы весят 1 - 20Гб).

bat:
Кликните здесь для просмотра всего текста
@set infile=000.txt
@set outfile=111.txt
@set count=4
@echo off
setlocal ENABLEDELAYEDEXPANSION
echo.>.tmp
>nul copy /y %infile% %outfile%
for /f "tokens=* delims=" %%a in (%outfile%) do (
set "line=%%a"
call arsLine)
del /q "!outfile!.tmp" .tmp
exit /b
arsLine
set "reg="
set "char=!line:~0,1!"
>nul findstr "!char!" .tmp && exit /b || (
echo.!char!>>.tmp
for /l %%i in (1,1,!count!) do set reg=!reg!.*!char!
findstr /v /r "!reg!" !outfile! >!outfile!.tmp
>nul copy /y !outfile!.tmp !outfile!)
set "line=!line:~1!"
if defined line goto parsLine
exit /b
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2015, 14:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск повторяющихся символов в тексте и удаление таких строк (C++):

Удаление повторяющихся символов - C++
из последовательности символов удалить самую большую из одинаковых элементов допустим есть строка aabbbbzcc, на выходе aazcc ...

Удаление повторяющихся символов - C++
Есть строка символов, я её обрабатываю, удаляю слово с повторяющимися символами,дело в том что заодно удаляются и цифровые слова, 55 44 33...

Удаление повторяющихся символов - C++
Задача банальна. Удалить повторяющиеся символы в строке. В интернете шарил, предложенные варианты слишком сложные и непонятные. Язык си,...

Удаление повторяющихся символов из строки - C++
Необходимо написать функцию delete_repeats, которая удаляет все повторяюшиеся символы из строки. например: Only three more lessons...

Удаление повторяющихся символов массива - C++
Надо сделать так что бы повторяющиеся символы массива удалялись, а сам массив сдвигался.

Удаление из строки повторяющихся символов - C++
Например Ввод: ABBGBAZ Вывод: ABGZ

23
nmcf
5560 / 4870 / 1652
Регистрация: 14.04.2014
Сообщений: 19,771
06.10.2015, 17:03 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <cctype>
#include <cstdio>
 
int main(int argc, char *argv[])
{
    if (argc != 4) return 1;
 
    std::ifstream ifs(argv[1]);
    if (!ifs) return 1;
 
    std::ofstream ofs(argv[2]);
    if (!ofs) return 1;
 
    unsigned count;
    if (sscanf(argv[3], "%u", &count) != 1) return 1;
 
    std::string s;
    unsigned c[256];
 
    while (true)
    {
        std::getline(ifs, s);
        if (ifs.fail()) break;
 
        size_t l = s.length();
        std::fill(c, c + 256, 0);
        bool f = true;
        for (size_t i = 0; i < l; ++i)
            if (isalnum(static_cast<unsigned char>(s[i])) && ++c[static_cast<unsigned char>(s[i])] > count)
            {
                f = false;
                break;
            }
 
        if (f)
        {
            ofs << s;
            if (!ifs.eof()) ofs << std::endl;
        }
    }
    
    return 0;
}
Три параметра задаются в командной строке: имя входного файла, имя выходного файла, допустимое количество повторов. Учитываются цифры и латинские буквы.
1
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
07.10.2015, 14:02  [ТС] #3
nmcf, как запустить код и с какими параметрами вводятся 3 условия в командной строке?
0
nmcf
5560 / 4870 / 1652
Регистрация: 14.04.2014
Сообщений: 19,771
07.10.2015, 14:16 #4
Ну я же всё описал. Компилируешь exe и запускаешь так:
C++
1
myprog.exe h:\infile.txt h:\outfile.txt 2
где myprog.exe - файл программы (у тебя может по-другому называться), входной и выходной файлы (имена и пути свои подставить) и цифра указывающая порог. 2 - значит свыше двух повторений исключать.
0
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
08.10.2015, 06:59  [ТС] #5
nmcf, при запуске ошибка!?
0
Миниатюры
Поиск повторяющихся символов в тексте и удаление таких строк  
nmcf
5560 / 4870 / 1652
Регистрация: 14.04.2014
Сообщений: 19,771
08.10.2015, 08:48 #6
Программа рабочая, я проверял у себя.
Какая версия Windows? Чем программу компилировал?
Вообще это известная ошибка, которая может быть и от вирусов и от проблем в Windows.
0
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
08.10.2015, 09:55  [ТС] #7
nmcf, winXP. win7(не часто использую).
ни чем ни комплировал. в блокнот закинул код и .exe назвал.
где взять прогу для компиляции и как называется?
0
nmcf
5560 / 4870 / 1652
Регистрация: 14.04.2014
Сообщений: 19,771
08.10.2015, 10:13 #8
Ну ты даёшь. Первый раз такое про блокнот слышу.
Надо скомпилировать же. Visual Studio возьми, например.
0
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
09.10.2015, 06:10  [ТС] #9
nmcf, скачал Visual Studio 2013 - при установки пищет: у вас слишком новая версия windows, нужна более старя. щас попробую от 2010.
какая версия вообще нужна? их несколько:
Visual Studio Community
Visual Studio Enterprise
Visual Studio Code
0
nmcf
5560 / 4870 / 1652
Регистрация: 14.04.2014
Сообщений: 19,771
09.10.2015, 09:00 #10
Такая программа в любой версии должна скомпилироваться. Для XP, наверное, VS 2010 нужна. Enterprise были в старых версиях, 2010 есть Professional, Premium и Ultimate. Бесплатная версия - Express.
Не забудь release выбрать, а то debug-вариант будет медленный.
0
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
09.10.2015, 11:54  [ТС] #11
nmcf, Не забудь release выбрать - это что?

п.с. опищити плиз подробна, как его в VS скопилировать.
0
nmcf
5560 / 4870 / 1652
Регистрация: 14.04.2014
Сообщений: 19,771
09.10.2015, 13:05 #12
Файл - Создать - Проект.
В разделе Visual C++ выбрать Консольное приложение Win32.
Нажать Далее.
Флажки установить как на картинке.
Откроется пустой проект (без файлов).
Проект - Добавить новый элемент.
Выбрать файл C++.
Откроется пустой файл. В него скопировать текст программы.
Выбрать на панели release (на картинке debug).
Построение - Построить решение.

Это по 2012 описано, в 2010 могут быть мелкие отличия.
0
Миниатюры
Поиск повторяющихся символов в тексте и удаление таких строк   Поиск повторяющихся символов в тексте и удаление таких строк  
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
09.10.2015, 13:51  [ТС] #13
при создании проекта: файл не пустой создается.

после нажатия на построение, куда файл сохраняться?
0
Миниатюры
Поиск повторяющихся символов в тексте и удаление таких строк   Поиск повторяющихся символов в тексте и удаление таких строк  
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
09.10.2015, 13:58  [ТС] #14
куда скомпилированный файл сохраняется?
вроде проект сохранился, но .exe файла нет.
0
Миниатюры
Поиск повторяющихся символов в тексте и удаление таких строк  
Cyber_F
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 69
09.10.2015, 14:07  [ТС] #15
если выбрать отладка - > начать отладку
ошибка:
0
Миниатюры
Поиск повторяющихся символов в тексте и удаление таких строк  
09.10.2015, 14:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2015, 14:07
Привет! Вот еще темы с ответами:

Поиск повторяющихся слов в тексте (доработка кода) - C++
Дан текст, содержащий n строк. Для каждого слова указать, сколько раз оно встречается в тексте. Я тут кое-что попробовала сделать (с++),...

Поиск повторяющихся строк в файле - C++
Нужна рекомендация! Есть сгенерированные цепочки (строки) которые записаны и в файл, и естественно выводятся с него. Нужно сделать...

Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар - C++
помогите пожалуйста решить Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое...

Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар. - C++
Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар. #include&lt;stdio.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru