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

Заменить слово в строке - C++

Восстановить пароль Регистрация
 
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
02.04.2014, 21:38     Заменить слово в строке #1
Пользователь записывает строку в динамический массив. После этого вводит слово, которое он хочет заменить в массиве и слово, на которое нужно заменить. В результате вывести на экран новую строку с измененным словом. Программу реализовать средствами языка С (функции strtok, strcmp, strcat и т.п.).

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>
using namespace std;
 
void main()
{
    char* pts=new char[100];
    char* pts_2=new char[100];
    
    cout<<" Enter your string: ";//ввод исходной строки
    cin.getline(pts,100);
 
    cout<<"\n Your string: ";//вывод исходной строки на экран
    for(int i=0;i<strlen(pts);i++)
    {
        cout<<*(pts+i);
    }
 
    char OldWord;
    char NewWord;
 
    cout<<"\n\n Enter the word you want to change: ";//ввод слова, которое хотим заменить
    cin>>OldWord;
    cin.ignore();
 
    cout<<"\n Enter new word: ";//ввод слова, которым хотим заменить
    cin>>NewWord;
 
    for(char* p=strtok(pts," "))
    {
        if(pts[*p]==OldWord)
        {
            pts_2[*p]=NewWord;
        }
        else
        {
            pts_2[*p]=pts[*p];
        }
    }
}
Помогите, пожалуйста, правильно написать цикл замены старого слова на новое.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 21:38     Заменить слово в строке
Посмотрите здесь:

Заменить заданное слово в тексте, находящемся в заданном файле, на другое слово. C++
Дана строка, заменить слово min на слово max C++
Заменить в строке одно слово на другое, заданное с клавиатуры. C++
C++ Надо исправить программу, пожалуйста. Задание: заменить заданное слово в строке другим заданным словом
Заменить в строке одно слово на другое, заданное с клавиатуры. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
03.04.2014, 03:34     Заменить слово в строке #2
Используй функции
C++
1
strcmp(pts, OldWord); // - для сравнивания строк
C++
1
strcpy(pts, NewWord); // - копирование содержимого из одной строки в другую
(см. свои условия и действия в if - else)
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
03.04.2014, 07:30  [ТС]     Заменить слово в строке #3
Цитата Сообщение от Blueeyer Посмотреть сообщение
Используй функции
С этого места можно подробнее? У меня просто немного другая логика решения была. Я брал старое и новое слова как целые символы, потом хотел разбить исходную строку на отдельные слова и сравнивать эти слова с вышеупомянутыми символами.
А в предложенном варианте нужно, как я понимаю, старое и новое слова тоже загнать в массивы и потом уже делать сравнение? И нужна ли вообще в таком случае функция strtok?
IrineK
Заблокирован
03.04.2014, 07:47     Заменить слово в строке #4
Цитата Сообщение от Donnerwetter Посмотреть сообщение
Я брал старое и новое слова как целые символы
А кто такие "слова - целые символы"?
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
03.04.2014, 08:32  [ТС]     Заменить слово в строке #5
Цитата Сообщение от IrineK Посмотреть сообщение
А кто такие "слова - целые символы"?
Это я глупость сморозил, уже сам понял В общем, решил пока задачу посимвольной заменой, так оказалось проще для понимания. А над другими вариантами решения буду дальше думать, еще не силен в этой теме.
IrineK
Заблокирован
03.04.2014, 08:40     Заменить слово в строке #6
char letter - это один символ (буква, цифра...)
char *word - это указатель на массив символов (слово или целую строку)

char* pts=new char[100]; - pts - указатель на массив символов, под который отведено 100 байт
char OldWord; - одна буква
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
03.04.2014, 08:49  [ТС]     Заменить слово в строке #7
IrineK, спасибо за объяснение!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 08:57     Заменить слово в строке
Еще ссылки по теме:

В строке первого объекта класса слово MAX длины заменить на слово MAX длины второго объекта класса C++
C++ В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Нужно заменить последнюю заглавную букву в строке на слово "Kukushechka" C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
03.04.2014, 08:57     Заменить слово в строке #8
Сделайте OldWord и NewWord статическими контейнерами. Скажем:
char OldWord[20];

if(pts[*p]==OldWord) - хотите сравнить два слова, используйте strcmp. В вашем случае
if( strcmp (p, OldWord) == 0) - т.е. если слова равны

Добавлено через 1 минуту
Использование strtok
Yandex
Объявления
03.04.2014, 08:57     Заменить слово в строке
Ответ Создать тему
Опции темы

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