С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 1
Регистрация: 12.02.2018
Сообщений: 48
1

Сократить строку. Заменить несколько символов одним

29.10.2018, 01:34. Показов 2045. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привести "Hi!there,!!I!!!!!!!!!!!!like!!!!!cyberforum" к виду "Hi!there,!I!like!cyberforum"
Использовать самый быстрый доступный способ. Без boost-а
И пожалуйста, не пишите страшный код.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2018, 01:34
Ответы с готовыми решениями:

В текстовом файле несколько последовательных одинаковых символов заменить одним
Используются только последовательные файлы При работе с типизованными файлами, если возможно,не...

Где ошибка в коде? В текстовом файле заменить несколько последовательных символов одним
Не понимаю почему Free pascal не выводит правильный результат. Входные: aaabbbccc выводит тоже...

Сократить строку до N го кол-ва символов
У меня в строке записано больше 27 символов, по нажатии на кнопку, нужно что-бы стало ровно 27,...

Дана произвольная строка символов. Заменить подряд стоящие одинаковые символы одним символом, а после него в скобках записать число символов, которые
Дана произвольная строка символов. Заменить подряд стоящие одинаковые символы одним символом, а...

6
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.10.2018, 01:45 2
Лучший ответ Сообщение было отмечено forprix как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string> 
using namespace std;
 
int main()
{
    int i=0;
    string s;
    cout << "String:\n";
    getline(cin, s);
    
    while (s[i])
    {
    if (s[i]=='!' && s[i+1]=='!') {s.erase(i,1); i--;}
    i++;
    }
    cout <<s<<endl;
    
system("pause");
return 0;
}
1
1468 / 1009 / 456
Регистрация: 30.10.2017
Сообщений: 2,800
29.10.2018, 02:02 3
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
#include <iostream>
 
using namespace std;
 
int main()
{
    char s[] = "Hi!there,!!I!!!!!!!!!!!!like!!!!!cyberforum";
 
    int count = 0;
 
    for (int i = 0; s[i] != '\0'; i++)
    {
        if (count == 0 || s[i] != '!' || s[i] != s[count - 1])
        {
            s[count] = s[i];
            count++;
        }
    }
 
    s[count] = '\0';
    cout << s << endl;
    
    system("pause");
    return 0;
}
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s = "Hi!there,!!I!!!!!!!!!!!!like!!!!!cyberforum";
 
    int count = 0;
 
    for (int i = 0; i < s.size(); i++)
    {
        if (count == 0 || s[i] != '!' || s[i] != s[count - 1])
        {
            s[count] = s[i];
            count++;
        }
    }
 
    s.resize(count);
    cout << s << endl;
    
    system("pause");
    return 0;
}
1
2 / 2 / 1
Регистрация: 12.02.2018
Сообщений: 48
29.10.2018, 02:06  [ТС] 4
Идеально. Спс
0
Мозгоправ
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
29.10.2018, 02:24 5
Вышеприведённые варианты сворачивают только восклицательные знаки.
А вот такой вариант убирает люьые дубли:
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
#include <iostream> 
 
using namespace std;
 
const size_t SIZE = 256;
 
int main() {
 
    char in[SIZE], out[SIZE];
 
    cin.getline(in, SIZE);
    char *pi = in, *po = out;
    while (*pi) {
        if (pi == in) {
            // первый символ всегда уникальный
            *po++ = *pi++;
            continue;
        }
        if (*pi != *(pi - 1))
            *po++ = *pi;
        ++pi;
    }
    *po = '\0';
 
    cout <<
        "Input : " << in << endl <<
        "Output: " << out << endl;
}
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
29.10.2018, 02:46 6
Цитата Сообщение от L0M Посмотреть сообщение
люьые дубли
Даже zoom в zom превратит?
0
Мозгоправ
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
29.10.2018, 02:55 7
Nishen, а вы попробуйте.
0
29.10.2018, 02:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2018, 02:55
Помогаю со студенческими работами здесь

Заменить несколько подряд идущих пробелов одним
нужна программа какая заменяет несколько подряд идущих пробелов одним и выводит полученный...

Заменить несколько подряд идущих пробелов одним
Напишите программу, которая посимвольно читает из std::cin, пока не достигнет конца потока ввода, и...

Заменить несколько подряд идущих пробелов одним
Программе задается имя входного текстового файла. Программа должна осуществлять вывод на экран...

Разделить одну строку на несколько частей одним махом
есть строка: //&quot;Stossdämpfer Federbein hinten links Ford MondeoEUR...

Сжать строку, заменяя несколько подряд стоящих пробелов одним
Помогите кто чем может: 1. Найти два наибольших элемента массива целых чисел. Написать процедуру...

Обработка массива: серии одинаковых символов заменить одним символом
Мне надо написать метод, который вместо серии одинаковых символов заменяет один символ


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru