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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Wenter
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 14
#1

В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны - C++

04.07.2013, 21:15. Просмотров 1140. Ответов 11
Метки нет (Все метки)

Не могу сообразить как написать программу:
Пользователь вводит текст
Необходимо замениь слово А(любое слово) на слово В(любое слово). А и В разной длинны
И вывести изменённый текст на экран.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 21:15     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Посмотрите здесь:

В тексте заменить слово «Петя» на слово «Игорь» - C++
Если в строке содержится слово «Петя», заменить его на слово «Игорь». Не используя replace и string.

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

Дана строка, заменить слово min на слово max - C++
#include <stdio.h> int main() { int n = 81; char str; int i; gets(str);

Заменить выбранное вами слово на другое слово - C++
Здравствуйте! Прошу помочь разобраться с ошибками. #include <iostream> #include <string> #include <string.h> using namespace...

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

Найти в строке любое слово, которое начинается на букву а и заканчивается на букву а - C++
Помогите: Дано рядок S. Найти любое слово которое начинаться на букву а и заканчивается на букву а. Если таких слов нет, то...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxtech
77 / 59 / 2
Регистрация: 26.06.2013
Сообщений: 198
05.07.2013, 02:45     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #2
Если я правильно понял, заменяем отдельные слова (учитываем разделители: пробелы, запятые и т.д.)
Код
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <string>
 
size_t find_any_first_of(std::string const& source, std::string const& item, size_t start = 0)
{
    size_t pos = std::string::npos;
 
    for (size_t i = 0; i < item.length(); ++i)
    {
        size_t p = source.find_first_of(item.at(i), start);
        if (pos > p)
        {
            pos = p;
            if (pos == start) break;
        }
    }
 
    return pos;
}
 
size_t find_any_first_not_of(std::string const& source, std::string const& item, size_t start = 0)
{
    size_t pos = std::string::npos;
 
    for (size_t p = start; p < source.length(); ++p)
    {
        bool no_item = true;
        for (size_t i = 0; i < item.length(); ++i)
        {
            if (source.at(p) == item.at(i))
            {
                no_item = false;
                break;
            }
        }
        if (no_item)
        {
            pos = p;
            break;
        }
    }
 
    return pos;
}
 
size_t replace_all_of(std::string& source, std::string const& replacing, std::string const& replacer, std::string const& delimiter = " ")
{
    size_t count = 0;
 
    size_t p1 = 0;
    size_t p2 = 0;
    while ((p1 = find_any_first_not_of(source, delimiter, p1)) != std::string::npos)
    {
        p2 = find_any_first_of(source, delimiter, p1 + 1);
        if (p2 == std::string::npos) p2 = source.length();
        size_t len = p2 - p1;
        if (source.compare(p1, len, replacing) == 0)
        {
            source.replace(p1, len, replacer);
            p1 += replacer.length();
            ++count;
        }
        else
        {
            p1 = p2 + 1;
        }
    }
 
    return count;
}
 
int main()
{
    using namespace std;
 
    string delimiter = " \t,.!?"; // Необходимые разделители можно добавить.
 
    string sentence = "\tgreen apple is not red apple still, \"green\" apple is an apple, and \"red\" apple is also an apple therefore, both are apples!";
    //cout << "Input sentence: ";
    //getline(cin, sentence);
 
    string replacing = "green";
    //cout << "Input replacing word: ";
    //cin >> replacing;
 
    string replacer = "yellow";
    //cout << "Input replacer word: ";
    //cin >> replacer;
 
    cout << "Sentence: " << sentence << endl;
    cout << "Replacing: " << replacing << endl;
    cout << "Replacer: " << replacer << endl;
    cout << "Replace " << replace_all_of(sentence, replacing, replacer, delimiter) << endl;
    cout << "Result: " << sentence << endl;
 
    return 0;
}
Wenter
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 14
05.07.2013, 13:40  [ТС]     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #3
Да учитывая всё это вы правы )

Добавлено через 14 минут
Выдаёт ошибку

Ошибка 3 error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник. c:\users\user\documents\visual studio 2012\projects\змена а на в\змена а на в\змена а на в.cpp 103

И предупреждения

Предупреждение 1 warning C4627: #include <iostream>: пропущен при поиске использования предкомпилированного заголовка c:\users\user\documents\visual studio 2012\projects\змена а на в\змена а на в\змена а на в.cpp 4

Предупреждение 2 warning C4627: #include <string>: пропущен при поиске использования предкомпилированного заголовка c:\users\user\documents\visual studio 2012\projects\змена а на в\змена а на в\змена а на в.cpp 5

А если добавляю директиву #include "stdafx.h" то там ещё 50 ошибок вылазит небьявленые индификаторы и т.д.

Извините за глупые вопросы но подскажите если несложно
nxtech
77 / 59 / 2
Регистрация: 26.06.2013
Сообщений: 198
05.07.2013, 13:50     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #4
Я не использовал предкомпиляцию заголовков

Добавлено через 1 минуту
Если вы используете, то перенесите все инклюде в stdafx.h
А в файл c main() добавьте #include "stdafx.h"
И все получится
Wenter
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 14
05.07.2013, 16:58  [ТС]     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #5
( Вы немогли бы показать как что добавлять а то я зделал как вы сказали и всёравно неработает
Может что-то делаю нетак Зарание спасибо
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
05.07.2013, 17:11     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    const string old_phrase = "kitty";
    const string new_phrase = "dog";
    string text;
    getline(cin, text);
    size_t pos = string::npos;
    while ( (pos = text.rfind(old_phrase, --pos)) != string::npos )
        text.replace(pos, old_phrase.size(), new_phrase);
    cout << text;
    return 0;
}
Wenter
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 14
05.07.2013, 17:32  [ТС]     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #7
Olivеr объесните пожалуйста что сделать так сказать как тупому чтоб устранить ошибку и предупреждения т.к. я недавно начал изучать С++

Olivеr в вашей программе выдаёт такиеже ошибки

Предупреждение 1 warning C4627: #include <iostream>: пропущен при поиске использования предкомпилированного заголовка c:\users\user\documents\visual studio 2012\projects\функция поиск словn4\функция поиск словn4\функция поиск словn4.cpp 4


Предупреждение 2 warning C4627: #include <string>: пропущен при поиске использования предкомпилированного заголовка c:\users\user\documents\visual studio 2012\projects\функция поиск словn4\функция поиск словn4\функция поиск словn4.cpp 5

Ошибка 3 error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник. c:\users\user\documents\visual studio 2012\projects\функция поиск словn4\функция поиск словn4\функция поиск словn4.cpp 22


если вставляю #include "stdafx.h"
то выдаёт 23 ошибки
Что сделать объясните чтоб я понял и разобрался рас и навсегда )))
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
05.07.2013, 17:34     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #8
Цитата Сообщение от Wenter Посмотреть сообщение
Что сделать объясните чтоб я понял и разобрался рас и навсегда )))
Установить и пользоваться Code::Blocks
metagalaxy
7 / 7 / 2
Регистрация: 18.02.2012
Сообщений: 61
05.07.2013, 17:43     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #9
Может просто присвоить строку B строке А?
nxtech
77 / 59 / 2
Регистрация: 26.06.2013
Сообщений: 198
06.07.2013, 11:17     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #10
Olivеr, ваш вариант заменяет последовательность символов, а не слово.
Проверьте, например, при таких данных
C++
1
2
3
const string old_phrase = "dog";
const string new_phrase = "cat";
string text = "dogma is a principle ...";
Получим "catma is a principle ..."
nxtech
77 / 59 / 2
Регистрация: 26.06.2013
Сообщений: 198
06.07.2013, 11:30     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #11
Wenter, прикрепленный проект создан в VC++2008, а у вас 2012. Studio запросит преобразовать, соглашайтесь.
Вложения
Тип файла: zip WordReplacer.zip (6.5 Кб, 10 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 18:54     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Еще ссылки по теме:

Написать программу МТ, которая аннулирует любое слово вида x$x, где x принадлежит {a,b}*, а $ не принадлежит {a, b} - C++
1. Написать программу МТ, которая аннулирует любое слово вида x$x, где x принадлежит {a,b}*, а $ не принадлежит {a, b}.

Найти в файле слово по заданному началу, вывести слово и его позицию - C++
Найти в файле слово по заданному началу, вывести слово и его позицию

Программа, удаляющее последнее слово, выводит первое слово. Что не так? - C++
#include &lt;iostream&gt; using namespace std; int main() { char s; int i = 0; cout &lt;&lt; &quot;stroka: &quot;; cin &gt;&gt; s; for(i =...

Слово максимальной длины заменить на слово минимальной длины - C++
Задача: Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы...


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

Или воспользуйтесь поиском по форуму:
Wenter
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 14
06.07.2013, 18:54  [ТС]     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны #12
nxtech++ )
Yandex
Объявления
06.07.2013, 18:54     В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Ответ Создать тему
Опции темы

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