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

Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" - C++

Восстановить пароль Регистрация
 
Макс_Фомин
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
31.03.2014, 14:56     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" #1
Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love". Например, для входной строки
I hate you, you dodo!
программа должна вывести следующее: I love you, you love!
Конечно, результат часто будет получаться бессмысленным. Так, для входной строки
John will run home.
будет выведено: Love love run love.
Если четырехбуквенное слово начинается с заглавной буквы, оно должно быть заменено словом "Love", а не "love". Регистр остальных букв, кроме первой, проверять не нужно. Словом называется любая строка, состоящая из букв и ограниченная с каждой стороны пробелом, символом конца строки или другим символом, не являющимся буквой. Программа должна повторять эти действия до тех пор, пока пользователь не захочет закончить работу.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 14:56     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love"
Посмотрите здесь:

C++ Преобразовать строку, заменяя каждое слово "this" словом "that".
C++ Ввести строку. Вывести её, заменив цифры на слова ( 0 - "one", 1 - "two", ...)
Написать программу заменяющую точки на "?" C++
C++ Определить длину каждого слова. Удалить все буквы "а" и "о" с фамилии
Все слова, не содержащие "bc" и заканчивающиеся на "ad" заменить на "!" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
31.03.2014, 15:33     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" #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
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
 
int main()
{
    const int maxLength = 128;
    char exit;
    do
    {
        char str[maxLength]="";
        cin.get(str,maxLength);
        int length = strlen(str);
        int i = 0;
        while (i<length)
        {
            if (isalpha(str[i]))
            {
                int j = i;
                while (i<length && isalpha(str[i]))
                    ++i;
                if (i-j==4)
                {
                    if (!islower(str[j]))
                        str[j] = 'L';
                    else str[j] = 'l';
                    str[j+1]='o';
                    str[j+2]='v';
                    str[j+3]='e';
                }
            }
            else ++i;
        }
        cout <<str <<endl
             <<"Continue? (y/n): ";
        do
            cin >> exit;
        while (exit!='y' && exit!='n');
        cin.ignore();
    }
    while (exit=='y');
    return 0;
}
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
31.03.2014, 16:02     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" #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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
 
std::vector<std::string> split(const std::string& source)
{
    std::vector<std::string> result;
 
    std::stringstream stream(source);
    std::string str;
 
    while (stream >> str)
        result.push_back(str);
 
    return result;
}
 
int main()
{
    std::string inputStr;
    std::vector< std::string > vecStr;
 
    std::cout << "input string : ";
    while(true)
    {
       std::getline(std::cin, inputStr);
 
       vecStr = split(inputStr);
 
       for(size_t i = 0; i < vecStr.size(); ++i)
         if(vecStr[i].size() == 4 && i == 0)
            vecStr[i] = "Fuck";
         else if(vecStr[i].size() == 4 && i != 0)
            vecStr[i] = "fuck";
 
         std::for_each(vecStr.begin(), vecStr.end(), [](std::string s){ std::cout << s << " "; }); std::cout << std::endl;
 
         std::cout << '\n' << "input string : ";
    }
    return 0;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
31.03.2014, 16:20     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" #4
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
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <cctype>
 
int main()
{
    std::string str("Ffff, df dddd 54.   Gggg."), cstr = str;
    int wlen = 4;
    std::replace_if(cstr.begin(), cstr.end(), [](char const c){return ispunct(c);}, ' ');
    std::stringstream sstr(cstr);
    std::string::iterator it(str.begin());
    while(sstr >> cstr)
    {
        it = std::find_if(it, str.end(), [](char const c){return !ispunct(c) && !isspace(c);});
        if(wlen == cstr.size())
        {
            str.replace(it - str.begin(), wlen, std::string(isupper(cstr.at(0)) ? "L" : "l") + "ove");
        }
        it += cstr.size();
    }
    std::cout << str << "\n\n";
    return 0;
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
31.03.2014, 16:41     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love" #5

Не по теме:

Хорошую строчку придумал для замены:
char str[] =
"If you my friend is realy lover,\
You need the woman, right to help her."


Yandex
Объявления
31.03.2014, 16:41     Напишите программу, считывающую строку текста и заменяющую все четырехбуквенные слова словом "love"
Ответ Создать тему
Опции темы

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