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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
lusuj
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 13
#1

Преобразовать строку, заменив все вхождения одного слова на другое - C++

27.11.2008, 17:29. Просмотров 1355. Ответов 3
Метки нет (Все метки)

помогите пожалуйста исправить задачку нужно преобразовать строку, заменив все слова ” государство”(в проге gos) на слово “страна”(st), подпрограмму обработки строки оформить в виде функции.
Получается меняет 1-й символ: gos gos. st = sos gos. st
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 <cstring>
using namespace std;
void zamena(char *str)   
{
 char *st1 = "gos";
 char *st2 = "st";
    for(int i=0; i<50; i++)
        {
            if (*str==*st1)
                {
                   *str=*st2;
                }
         }
 cout << str;
}
void main()
{    
 char str[50]="gos gos. st";
 cout << "  stroka: " ; 
 cout << str;
 cout << endl << "posle redaktirovaniya: " ;
 zamena(str); 
}
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2008, 17:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать строку, заменив все вхождения одного слова на другое (C++):

Заменить все вхождения одного слова на другое - C++
Задание: считать из файла строки, заменить все вхождения одного слова на другое. В консоль: input, output, hello, bay. - заменить в файле...

Преобразовать строку, заменив точками все двоеточия, встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки... - C++
14.24. Дана строка. Преобразовать ее, заменив точками все двоеточия, встречающиеся среди первых n/2 символов, и заменив точками все...

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

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

строки (считать, заменив все вхождения слова «Slovo» на слово «Znak») - C++
Помогите, пожалуйста, как написать программку, которая считывает с клавиатуры строку символов, после чего выводит ее на экран,...

Преобразовать строку, заменив все двоеточия точками, все восклицательные знаки - вопросительными - C++
Дана строка из n символов.Преобразовать ее, заменив все двоеточия (:) точками, все восклицательные знаки - вопросительными.

3
Lord_Voodoo
Супер-модератор
8590 / 2205 / 61
Регистрация: 07.03.2007
Сообщений: 10,960
Завершенные тесты: 1
27.11.2008, 18:31 #2
ну *str=*st2; некорректно, нужно strcpy(str, st2);
но есть один нюанс, у тебя не подстроку, а всю строку заменит, тебе надо же сканировать строку, вообще, цикл у тебя в функции непонятно зачем

можно так:
Код
#include <iostream>
#include <cstring>
using namespace std;
void zamena(string &str)
{
 string st1 = "gos", st2 = "st";
 while(str.find(st1,0) != -1){
   str.replace(str.find(st1,0), st1.length(), st2);
 }
}
int main()
{
 string str="gos gos.exe gos st st eve pos gos stat";
 cout << "  stroka: " ;
 cout << str<< endl;
 cout << "posle redaktirovaniya: " ;
 zamena(str);
 cout << str<< endl;
 return 0;
}
1
lusuj
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 13
29.11.2008, 00:19  [ТС] #3
спасибо

Добавлено через 5 часов 16 минут 5 секунд
WooDooMan скажите пожалуйста while(str.find(st1,0) != -1) цикл работает пока есть в строке str слово st1, если я правильно понимаю, а почему не равно -1 (!= -1) ?
спасибо
0
Lord_Voodoo
Супер-модератор
8590 / 2205 / 61
Регистрация: 07.03.2007
Сообщений: 10,960
Завершенные тесты: 1
29.11.2008, 11:35 #4
ну если бы ты почитал хелп по стрингам, то знал бы, что функция возвращает либо позицию искомой подстроки, а это может быть и 0, в противном случае -1
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2008, 11:35
Привет! Вот еще темы с ответами:

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

Строки. Преобразовать строку, заменив в ней все восклицательные знаки точками - C++
Сделал на паскале незнаю как сделать на С++ помогите. Дана строка символов преобразовать строку заменив в ней все восклицательные знаки...

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

Ввести строку и слово, удалить все вхождения слова и вывести строку - C++
помогите с лабой! Добавлено через 22 секунды через &lt;stdio.h&gt;


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
29.11.2008, 11:35
Ответ Создать тему
Опции темы

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