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

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

Войти
Регистрация
Восстановить пароль
 
Zhuka
#1

Заменить все последовательности символов 'on' на 'online' - C++

17.04.2010, 20:11. Просмотров 557. Ответов 5
Метки нет (Все метки)

Дана символьная строка. Заменить все последовательности символов 'on' на 'online' и вывести новую строку (если искомой последовательности в строке нет, то вывести соответствующее сообщение).

Добавлено через 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
#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstring>
using namespace std;
 
void Method(char *mas){
    for(int i = 0; i < 100; i++){
        if(mas[i]=='o' && mas[i+1]=='n'){
            mas[i]="online";
        }
    }
    for(int i = 0; i < 100; i++){
        cout<<mas[i];
    }
}
int main(){
    char *mas = new char[100];
    cout<<"enter>";
    cin.getline(mas,100);
    Method(mas);
    delete[] mas;
    return 0;
}
я вот так написал... но у меня ошибки!!!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2010, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить все последовательности символов 'on' на 'online' (C++):

Заменить в последовательности символов после первого вхождения знака ‘+’ все цифры на символ – - C++
Заменить в последовательности символов после первого вхождения знака ‘+’ все цифры на символ – .

Посчитать сколько слов в строке начинается с буквы "т" 2. Ввести фразу. Все последовательности одинаковых символов заменить на выражение N(C) - C++
Очень нужно написать программы на C 1. Посчитать сколько слов в строке начинается с буквы &quot;т&quot; 2. Ввести фразу. Все последовательности...

Заменить в последовательности символов после первого вхождения символа "+" все цифры на символ "-" - C++
Заменить в последовательности символов после первого вхождения символа &quot;+&quot;все цифры на символ &quot;-&quot;О_о Добавлено через 1 минуту что бы...

Найти все вхождения в строку последовательности символов "сто" и заменить на "100" - C++
Дана строка символов. Найти все вхождений последовательностей символов &quot;сто&quot; и заменить на &quot;100&quot;

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

Перечислить все последовательности длины n из символов {0,1,2} - C++
2. Перечислить все последовательности длины n из символов {0,1,2}, в которых никакая группа цифр не встречается три раза подряд. То есть,...

5
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
17.04.2010, 21:03 #2
Цитата Сообщение от Zhuka Посмотреть сообщение
mas[i]="online";
Страшная ересь, вы пытаетесь присвоить символу массив символов <_>
0
Zhuka
17.04.2010, 21:05 #3
а как можно ещё написать?
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
17.04.2010, 21:33 #4
Zhuka, ну например так...
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
#include <iostream>
#include <cstring>
using namespace std;
 
char * replaceOn(char *str) {
    size_t len = strlen(str);
    char *str2 = new char[strlen(str) * 3];
    int i = 0;
    while (*str) {
        if (*str == 'o' && *(str + 1) == 'n') {
            strcat(str2, "online");
            i += 6;
            str += 2;
        }
        else {
            *(str2 + i) = *str;
            i++;
            str++;
        };
 
    };
    if (strlen(str2) == len)
        cout << "Combination is not found" << endl;
    else
        str = str2;
    delete[] str2;
 
    return str;
}
 
int main() {
    char *str = new char[101];
    cin.getline(str, 100);
    str = replaceOn(str);
    cout << str << endl;
    delete[] str;
    system("pause");
    return 0;
}
а вообще, удобнее и православнее было бы использовать string...
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
17.04.2010, 21:51 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
    
int main(){
    std::string s = "on abc on def on ghi";
    std::cout << s << std::endl;
    std::string ch_from = "on";
    std::string ch_to = "online";
    size_t pos = 0;
    while ( ( pos = s.find(ch_from, pos) ) != std::string::npos ){
        s.replace(pos, ch_from.size(), ch_to);
        pos += ch_to.size();
    }
    std::cout << s << std::endl;
    return 0;
}
1
Demihalf
Унылый школьник
126 / 60 / 3
Регистрация: 06.11.2009
Сообщений: 354
17.04.2010, 22:28 #6
Хм, мой код адекватно работает только в Builder'е... VS выдает вообще какую-то чушь, MinGW что-то более или менее...

Добавлено через 14 минут
Теперь вроде бы все в порядке...

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
#include <iostream>
#include <cstring>
using namespace std;
 
char * replaceOn(char *str) {
    size_t len = strlen(str);
 
    char *str1 = new char[strlen(str)];
    strcpy(str1, str);
    char *str2 = new char[strlen(str) * 3];
    strcpy(str2, "");
 
    int i = 0;
    while (*str) {
        if (*str == 'o' && *(str + 1) == 'n') {
            strcat(str2, "online");
            i = strlen(str2);
            str += 2;
        }
        else {
            *(str2 + i) = *str;
            *(str2 + i + 1) = '\0';
            i = strlen(str2);
            str++;
        };
 
    }
    *(str2 + i) = '\0';
    if (strlen(str2) == len) {
        cout << "Combination is not found" << endl;
        return str1;
    }
    else
        return str2;
}
 
int main() {
    char *str = new char[101];
    cin.getline(str, 100);
    str = replaceOn(str);
    cout << str << endl;
    delete[] str;
    system("pause");
    return 0;
}
1
17.04.2010, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2010, 22:28
Привет! Вот еще темы с ответами:

Заменить все максимальные элементы последовательности нулями - C++
Дана последовательность чисел. Заменить все максимальные элементы нулями.

В последовательности X1, . . ., Xn все члены, меньшие двух, заменить нулями - C++
Даны натуральное число п, действительные числа X1 ..., Xn. В последовательности X1, . . ., Xn все члены, меньшие двух, заменить нулями....

Заменить все отрицательные элементы последовательности не кратные 3 противоположными им числам - C++
Ребят, помогите с++ Заменить все отрицательные элементы, не кратные 3, противоположными им числам

Строка символов. Все вхождения ‘abc’ заменить на ‘def’ - C++
Дана строка символов. Необходимо все вхождения ‘abc’ заменить на ‘def’


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

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

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