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

В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed - C++

Восстановить пароль Регистрация
 
seerg0
1 / 1 / 0
Регистрация: 17.03.2010
Сообщений: 17
27.10.2010, 16:55     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #1
Дан текст. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами.
В тех словах, которые оканчиваются сочетанием букв ing, заменить это окончание на ed.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2010, 16:55     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed
Посмотрите здесь:

C++ Заменить ing на ed
В тех словах, которые оканчиваются сочетанием букв ing, заменить это окончание на ed. C++
Строки (ввести строку разделенную пробелами, и в словах которые оканчиваются на АВС заменить СС) C++
C++ Составить программу для подсчета числа одинаковых букв в словах X и Y равной длины, стоящих на одних и тех же местах
Перечислить слова, которые состоят из тех же букв C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.10.2010, 17:07     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
seerg0,

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
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
 
int main()
{
    std::string Find="ing";
    std::string Ins="ed";
    std::string Str="Hello hing and ning and ting ying";
    std::istringstream ist(Str);
    std::vector<std::string> Vec;
    std::string Temp;
    while(ist>>Temp)
        Vec.push_back(Temp);
    for(size_t i=0; i<Vec.size(); ++i)
    {
         std::string::iterator Iter=Vec[i].end()-Find.size();
         std::string Str="";
         Str.assign(Iter, Vec[i].end());
         if(Str==Find)
         {
             Vec[i].erase(Iter, Vec[i].end());
             Vec[i]+=Ins;
         }
    }
    for(size_t i=0; i<Vec.size(); ++i)
    std::cout<<Vec[i]<<' ';
    std::cout<<std::endl;
    return 0;
}
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
01.12.2013, 08:16     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #3
почему если это:
Цитата Сообщение от ForEveR Посмотреть сообщение
string Str="Hello hing and ning and ting ying";
заменить на:
C++
1
2
3
string Str;
cout << "Enter string: " << endl;
cin >> Str;
то одно слово, например, "playing", меняет на "played", а если вводишь целое предложение, то нет?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.12.2013, 09:21     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #4
p1ka4y777, потому что cin >> str запишет в str символы до пробельного (' ', '\t' и т.д.).

Добавлено через 1 минуту
т.е. только одно слово.

Добавлено через 46 минут
как вариант:
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
#include <iostream>
#include <string>
 
 
int main() {
    std::string const toReplace    = "ing";
    std::string const replacement  = "ed";
    std::string const separators   = " ";
    
    std::string string = " Hello  hing and   ning and ting ying ";
    
    for (std::string::size_type first = 0, last = 0; ; ) {
       first = string.find_first_not_of(separators, last);
       if (first == std::string::npos) {
          break;
       }
       
       last = string.find_first_of(separators, first);
       if (last == std::string::npos) {
          break;
       }
       
       std::string::size_type wordLength = last - first;
       if (wordLength >= toReplace.length()) {
          std::string::size_type tailFirst = last - toReplace.length();
          if (string.compare(tailFirst, toReplace.length(), toReplace) == 0) {
             string.replace(tailFirst, toReplace.length(), replacement);
          }
       }
    }
    
    std::cout << string << std::endl;
}
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
01.12.2013, 09:55     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #5
gray_fox, спасибо, пример тоже хороший!
но всё же...
хотел бы чтобы текст вводился с консоли...
т.е. на сколько я понял это как то так должно быть?
C++
1
2
3
text[n];
cout << "Enter text:\n" << endl;
gets_s(text);
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.12.2013, 10:01     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #6
p1ka4y777, советую пользоваться std::string, а не С-строками. Если до превода строки прочитать, то есть std::getline:
C++
1
2
std::string string;
std::getline(std::cin, string);
С массивом char:
C++
1
2
char text[n];
std::cin.getline(text, n);
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
01.12.2013, 10:48     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #7
getline... забыл)
Цитата Сообщение от gray_fox Посмотреть сообщение
for (std::string::size_type first = 0, last = 0; ; )
в 12 строчке всё нормально или вы что-то пропустили? (или так машинально ";" поставили)
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.12.2013, 11:04     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #8
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
в 12 строчке всё нормально или вы что-то пропустили? (или так машинально ";" поставили)
Да нет. Хотя наверное стоит заменить на
C++
1
2
std::string::size_type first = 0, last = 0;
while (true) {
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
01.12.2013, 11:17     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #9
Цитата Сообщение от gray_fox Посмотреть сообщение
td::string::size_type first = 0, last = 0; while (true) {
думаю не стоит... оно только "ing" тогда меняет, если оно встречается отдельно от слова (целого)

Добавлено через 3 минуты
так что на счёт этого:
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
C++
1
for (std::string::size_type first = 0, last = 0; ; )
просто без последнего ";" цикл не пойдет... да и выглядит это как-то... не так)
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
01.12.2013, 11:20     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #10
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
думаю не стоит... оно только "ing" тогда меняет, если оно встречается отдельно от слова (целого)
:/ код аналогичный http://ideone.com/4fG7k7

Добавлено через 1 минуту
Цитата Сообщение от p1ka4y777 Посмотреть сообщение
просто без последнего ";" цикл не пойдет... да и выглядит это как-то... не так)
у for синтаксис такой, конечно "не пойдёт"...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2013, 11:28     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed
Еще ссылки по теме:

Заменить в словах окончания "ing" на "ed". C++
Вывести слова с нужным сочетанием букв C++
C++ Вывести на экран числа, кроме тех, которые делятся на 3 или оканчиваются на 3

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

Или воспользуйтесь поиском по форуму:
p1ka4y777
 Аватар для p1ka4y777
2 / 2 / 0
Регистрация: 04.10.2013
Сообщений: 155
01.12.2013, 11:28     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed #11
Цитата Сообщение от gray_fox Посмотреть сообщение
у for синтаксис такой
та я знаю, но всё равно... как-то "некрасиво")
Yandex
Объявления
01.12.2013, 11:28     В тех словах, которые оканчиваются сочетанием букв ing, заменить окончание на ed
Ответ Создать тему
Опции темы

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