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

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

Войти
Регистрация
Восстановить пароль
 
ЮрийFM
0 / 0 / 0
Регистрация: 26.12.2008
Сообщений: 9
#1

если в строке встречена одинаковая последовательность символов, заменить их кодом 255 - C++

28.12.2008, 20:11. Просмотров 1001. Ответов 3
Метки нет (Все метки)

Задача такова:
обработать массив строк (длина каждой не более 100 символов). если в строке встречена одинаковая последовательность символов, заменить их кодом 255, за которым следует код этого символа и количесво одинаковых символов. Желательно без стандартых функций со строками.


Может кто осилит..

Вопрос таков ...это код работает без привязок... в старом компиляторе к примеру Borland_C не раюботает... может кто поможет отформатировать код?? очень надобно

Код
void EncodeSingleChar(std::string & str, char c, char count)
{
    if (count != 0)
    {
        str.push_back(-1);
        str.push_back(count + 1);
    }

    str.push_back(c);
}

void EncodeString(std::string & str)
{
    const long cMaxStringSize = 100;
    if (str.size() > cMaxStringSize)
    {
        std::cerr << "String too long: " << str << std::endl;
        throw std::runtime_error(std::string("String too long: ") + str);
    }

    std::string out_str;
    out_str.reserve(str.size());

    char last_char = 0;
    char charsCount = 0;

    std::string::const_iterator it = str.begin();
    if (it != str.end())
    {
        last_char = *it;
        ++it;
    }

    for (; it != str.end(); ++it)
    {
        if (*it == last_char)
        {
            ++charsCount;
        }
        else
        {
            EncodeSingleChar(out_str, last_char, charsCount);
            charsCount = 0;
        }

        last_char = *it;
    }

    if (last_char)
        EncodeSingleChar(out_str, last_char, charsCount);

    str = out_str;
}

void Test()
{
    std::ifstream in_f("test_in.txt");
    std::ofstream out_f("test_out.txt");

    std::string str;
    while (in_f.good() && std::getline(in_f, str))
    {
        EncodeString(str);
        out_f << str << std::endl;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2008, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос если в строке встречена одинаковая последовательность символов, заменить их кодом 255 (C++):

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

Заменить в строке одну последовательность символов на другую - C++
Нужно ввести строку, создать вторую из символов первой, заменив каждую последовательность символов &quot;xyz&quot; заменить на &quot;zamenena&quot; и вывести...

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

Текст, состоящий не более чем из 255 символов, разбить на строки длиной не более 50 символов в строке - C++
Текст, состоящий не более чем из 255 символов, разбейте на строки длиной не более 50 символов в строке. Переносите только на месте...

Массив: Вычислить сумму элементов, лежащих на главной диагонали матрицы {Cÿ}, образованной следующим образом: Cÿ = aÿ + bÿ - C++
Здравствуйте, дорогие форумчане!;) -------------------------------------- Помогите, пожалуйста, решить задание. ...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz") - C++
Найти в строке последовательность символов (&quot;abcd&quot;) и заменить ее другой (&quot;xyz&quot;).

3
ЮрийFM
0 / 0 / 0
Регистрация: 26.12.2008
Сообщений: 9
05.01.2009, 12:44  [ТС] #2
Вопрос таков ...это код работает без привязок... в старом компиляторе к примеру Borland_C не раюботает... может кто поможет отформатировать код?? очень надобно
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
void EncodeSingleChar(std::string & str, char c, char count)
{
    if (count != 0)
    {
        str.push_back(-1);
        str.push_back(count + 1);
    }
 
    str.push_back(c);
}
 
void EncodeString(std::string & str)
{
    const long cMaxStringSize = 100;
    if (str.size() > cMaxStringSize)
    {
        std::cerr << "String too long: " << str << std::endl;
        throw std::runtime_error(std::string("String too long: ") + str);
    }
 
    std::string out_str;
    out_str.reserve(str.size());
 
    char last_char = 0;
    char charsCount = 0;
 
    std::string::const_iterator it = str.begin();
    if (it != str.end())
    {
        last_char = *it;
        ++it;
    }
 
    for (; it != str.end(); ++it)
    {
        if (*it == last_char)
        {
            ++charsCount;
        }
        else
        {
            EncodeSingleChar(out_str, last_char, charsCount);
            charsCount = 0;
        }
 
        last_char = *it;
    }
 
    if (last_char)
        EncodeSingleChar(out_str, last_char, charsCount);
 
    str = out_str;
}
 
void Test()
{
    std::ifstream in_f("test_in.txt");
    std::ofstream out_f("test_out.txt");
 
    std::string str;
    while (in_f.good() && std::getline(in_f, str))
    {
        EncodeString(str);
        out_f << str << std::endl;
    }
}
0
Globus_lord
Сообщений: n/a
04.01.2013, 15:31 #3
А вдруг осталось ))) Юрий, код программы остался по этой задаче? ))
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
06.12.2013, 16:25 #4
аналогичный вопрос?...

Добавлено через 17 минут
C++
1
2
char last_char = 0;
char charsCount = 0;
что это за бред? так можно?
0
06.12.2013, 16:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 16:25
Привет! Вот еще темы с ответами:

Если минимальный элемент матрицы стоит в первой строке, то элементы, стоящие в строке за ним, заменить нулями - C++
Задана матрица С(5,5). Если минимальный элемент стоит в первой строке, то все элементы стоящие в строке за ним, заменить нулями. Какие...

Заменить последнее слово из введенной строки на последовательность символов «*» - C++
Написать программу замены последнего слова из введенной строки на последовательность символов «*» #include &quot;stdafx.h&quot; #include&lt;stdio.h&gt;...

Заменить в строке последовательность пробелов на один пробел. - C++
#include &lt;stdio.h&gt; int main() { char str; int i; gets(str);

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


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

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

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