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

Строка - C++

Войти
Регистрация
Восстановить пароль
 
serik13
3 / 3 / 0
Регистрация: 04.01.2011
Сообщений: 71
28.10.2011, 21:17     Строка #1
Ввести строку длиной до 30 символов, заменить в ней двойных
символов на одиночные, пробелов - на знак подчёркивания,
сочетания '**' на многоточие '...'

Заранее спасибо.!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2011, 21:17     Строка
Посмотрите здесь:

C++ строка в c++
C++ строка
Строка C++
C++ строка
строка C++
строка C++
Строка C++
Строка C++
Строка C++
строка C++
Строка С++ C++
Строка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Revol'veR
 Аватар для Revol'veR
23 / 23 / 2
Регистрация: 05.11.2010
Сообщений: 134
28.10.2011, 22:45     Строка #2
А потрудиться? Хотя бы немножечко? Здесь вас за ошибки в коде никто не убъёт)))
serik13
3 / 3 / 0
Регистрация: 04.01.2011
Сообщений: 71
28.10.2011, 22:51  [ТС]     Строка #3
Можешь написать код?? заранее спасибо
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
29.10.2011, 15:31     Строка #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string str;
 
    str = "This is string!!";
    for(int i = 0; i < str.length()-1; i++) {
        
        if(str[i] == str[i+1]) {
            str.erase(i,1);
        }
        if(str[i] == ' ') {
            str[i] = '_';
        }
 
    }
    cout << str << endl; //This_is_string!
    system("pause");
}
Есть одно "но", если встретится три одинаковых символа, к примеру !!!, программа преобразует их в !!. Поскольку в задании говорилось только про двойные символы. И еще буквы тоже являются символами

Добавлено через 24 минуты
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
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string str;
    int size_of_string,i=int();
    size_t pos;
 
    str = "This **is string!!**";
    size_of_string = str.length();
 
    while(size_of_string>0) {
        
        if(str[i] == str[i+1] && str[i] != '*') {
            str.erase(i,1);
            size_of_string--;
        }
        if(str[i] == ' ') {
            str[i] = '_';
        }
        pos = str.find("**");
        if(pos != string::npos) {
            str.erase(pos,2);
            str.resize(str.length()+3);
            str.insert((int)pos,"...");
        }
        i++;
        size_of_string--;
 
    }
    cout << str << endl; //This_...is_string!...
    system("pause");
}
Ах да, забыл про звездочки... Вот вариант с преобразованием звездочек.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.10.2011, 15:34     Строка #5
Цитата Сообщение от serik13
Ввести строку длиной до 30 символов, заменить в ней двойных
символов на одиночные, пробелов - на знак подчёркивания,
сочетания '**' на многоточие '...'
заменяешь все двойные символы, кроме звёздочек, на одинарные, проверяя, не пробелы ли это
потом заменяешь двойные звёздочки на многоточия
Yandex
Объявления
29.10.2011, 15:34     Строка
Ответ Создать тему
Опции темы

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