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

В тексте заменить слова "компьютер" на "к*******р" - C++

Восстановить пароль Регистрация
 
AleK135
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 29
28.07.2015, 10:58     В тексте заменить слова "компьютер" на "к*******р" #1
Задача в текстовом файле заменить все слова "компьютер" на "к*******р". Что-то мучаюсь, не получается... Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2015, 10:58     В тексте заменить слова "компьютер" на "к*******р"
Посмотрите здесь:

C++ В тексте заменить символы "fh" на символ "с"
Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один",..."девять" C++
Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
Строка: заменить первую "о" на "а", удалив остальные "о" C++
Все слова, не содержащие "bc" и заканчивающиеся на "ad" заменить на "!" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,239
28.07.2015, 11:03     В тексте заменить слова "компьютер" на "к*******р" #2
Покажите код, где вы мучаетесь, и у вас что-то не получается?
klopik
58 / 58 / 10
Регистрация: 18.05.2015
Сообщений: 292
28.07.2015, 11:07     В тексте заменить слова "компьютер" на "к*******р" #3
http://www.zedwood.com/article/cpp-str_replace-function
AleK135
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 29
28.07.2015, 11:10  [ТС]     В тексте заменить слова "компьютер" на "к*******р" #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
26
27
28
29
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstring>
 
using namespace std;
 
int main()
{
   ifstream file ("C:\\ÏðîãðГ*ììèðîâГ*Г*ГЁГҐ c++\\file.txt");
   char str[500];
   char a[9];
   a[9] = 'компьютер';
   while(!file.eof())
   {
       file.getline(str, 500);
       for(int i = 0; i < strlen(str); i++){
        if(strcmp(str, a)==0){
            a[9] = 'к*******р';
           }
       }
        
       
   }
   file.close();
   
system("pause");
return 0;
}

Да вот, уже какая-то путаница
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,239
28.07.2015, 11:36     В тексте заменить слова "компьютер" на "к*******р" #5
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(NULL, "rus");
    const int size = 500;
    const char* const seach = "компьютер";
    char str[size] = "привет как дела что делаешь? где твой компьютер? Мой компьютер умер.";
    cout << str << endl;
    for(int i = 0; i < size; i++)
    {
        if(str[i] == seach[0])
        {
            // сравнение строки с подстркоой
            bool isSame = true;
            for(int q = 1; q < strlen( seach ); q++)
            {
                if(str[i + q] != seach[q])
                {
                    isSame = false;
                    break;
                }
            }
 
            if(isSame)
            {
                // замена
                for(int q = 1; q < strlen( seach ) - 1; q++)
                {
                    str[i + q] = '*';                   
                }
            }
        }
    }
 
 
    cout << str << endl;
 
}
hoggy
5228 / 2119 / 403
Регистрация: 15.11.2014
Сообщений: 4,806
Завершенные тесты: 1
28.07.2015, 12:27     В тексте заменить слова "компьютер" на "к*******р" #6
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
for(int q = 1; q < strlen( seach ) - 1; q++)
на каждой итерации заново вычисляете длину строки
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,239
28.07.2015, 12:59     В тексте заменить слова "компьютер" на "к*******р" #7
Я вам больше скажу - в двух циклах так
AleK135
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 29
05.08.2015, 11:28  [ТС]     В тексте заменить слова "компьютер" на "к*******р" #8
Задача: заменить в тексте слова "компьютер" на "к*******р"
Подскажите, что не правильно
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
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstring>
 
using namespace std;
 
int main()
{
    
setlocale(LC_CTYPE,"RUS");
    int const N = 10;
   char str[500];
   char a[N] = "компьютер";
   char b[N] = "к*******р";
   ifstream file ("C:\\file.txt");
   while(!file.eof())
   {
       file.getline(str, 500);
       for(int i = 0; i < strlen(str); i++){
        if(strcmp(str, a)==0){
            a[N] = b[N];
           }
       }
        
       
   }
   file.close();
   
system("pause");
return 0;
}
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
05.08.2015, 12:22     В тексте заменить слова "компьютер" на "к*******р" #9
Цитата Сообщение от AleK135 Посмотреть сообщение
Подскажите, что не правильно
В двадцать второй строке происходит замена одного символа на другой. Десятый элемент массива b заносится в десятый элемент массива a.
ShadowFirst
54 / 47 / 1
Регистрация: 31.10.2013
Сообщений: 161
05.08.2015, 14:24     В тексте заменить слова "компьютер" на "к*******р" #10
неправильно еще то, что если попадется слово например компромисс то сами понимаете часть этого слова заменится звездачками.
AleK135
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 29
05.08.2015, 15:41  [ТС]     В тексте заменить слова "компьютер" на "к*******р" #11
Извините, что я опять сюда обращаюсь, но сейчас все равно что-то не так...
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
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstring>
 
using namespace std;
 
int main()
{
    
setlocale(LC_CTYPE,"RUS");
    int const N = 10;
   char str[500];
   char a[N] = "êîìïüþòåð";
   char b[N] = "ГЄ*******Г°";
   ifstream file ("C:\\file.txt");
   while(!file.eof())
   {
       file.getline(str, 500);
       for(int i = 0; i < strlen(str); i++){
        if(strcmp(str, a)==0){
            for(int e = 1; e > N; e++){
                a[e] = b[e];
            }
           }
       }
        
       
   }
   file.close();
   
system("pause");
return 0;
}
Добавлено через 1 минуту
Не распознал русский, вот
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
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstring>
 
using namespace std;
 
int main()
{
    
setlocale(LC_CTYPE,"RUS");
    int const N = 10;
   char str[500];
   char a[N] = "компьютер";
   char b[N] = "к*******р";
   ifstream file ("C:\\file.txt");
   while(!file.eof())
   {
       file.getline(str, 500);
       for(int i = 0; i < strlen(str); i++){
        if(strcmp(str, a)==0){
            for(int e = 1; e > N; e++){
                a[e] = b[e];
            }
           }
       }
        
       
   }
   file.close();
   
system("pause");
return 0;
}
AleK135
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 29
06.08.2015, 21:12  [ТС]     В тексте заменить слова "компьютер" на "к*******р" #12
Надо изменить текст- то есть слово компьютер на к*******р
Вот, что у меня получается...

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
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cstring>
 
using namespace std;
 
int main() 
{
    char text[500];
    char computer[10] = "компьютер";
    char cNNNNNNNr[10] = "к*******р";
    ifstream file ("C:\\file.txt");
    ofstream fileN ("C:\\fileN.txt");
    
    while(!file.eof())
    {
        file.getline(text, 500);
        file >> text;
        for(int i = 0; i < strlen(text); ++i){
            if(strcmp(text, computer)==0){
                text[i] = cNNNNNNNr[10];
        }
        }
        fileN << text;
    }
    file.close();
    system("pause");
    return 0;
}
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
06.08.2015, 21:40     В тексте заменить слова "компьютер" на "к*******р" #13
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
 
    char text[500];
    char computer[] = "компьютер";
    char cNNNNNNNr[] = "к*******р";
    
    ofstream fileN ("C:\\fileN.txt");
    ifstream file ("C:\\file.txt");
    if (!file)
    {
        cout << "Error!" << endl;
        system("pause");
        return 0;
    }
    
    while(file >> text)
    {
        if(strcmp(text, computer) == 0)
            fileN << cNNNNNNNr << ' ';
        else
            fileN << text << ' ';
    }
    file.close();
    fileN.close();
    return 0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2015, 23:38     В тексте заменить слова "компьютер" на "к*******р"
Еще ссылки по теме:

Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
C++ Заменить всякое вхождение слова "это" на слово "то"
Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око" C++

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

Или воспользуйтесь поиском по форуму:
EVP
314 / 236 / 41
Регистрация: 14.12.2010
Сообщений: 457
06.08.2015, 23:38     В тексте заменить слова "компьютер" на "к*******р" #14
Цитата Сообщение от AleK135 Посмотреть сообщение
Надо изменить текст- то есть слово компьютер на к*******р
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
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>
#include <locale>
 
std::pair<std::string::iterator,std::string>
findAny(const std::set<std::string>& _words, std::string::iterator _from, std::string::iterator _end)
{
    auto result = _end;
    std::string word;
    for (auto& w : _words)
    {
        auto iter = std::search(_from, _end, w.begin(), w.end());
        if (result > iter)
            result = iter, word = w;
    }
    return std::make_pair(result,word);
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    std::string text = "Надо изменить текст- то есть слово компьютер на компьютер.";
    std::set<std::string> words;
    words.insert("компьютер");
    //words.insert("текст");
    //words.insert("слово");
    
    std::cout << text << std::endl;
 
    std::string newText;
    auto out_it = std::back_inserter(newText);
    {
        auto from = text.begin();
        while (from != text.end())
        {
            auto pair = findAny(words, from, text.end());
            if (pair.first == text.end())
            {
                std::copy(from, text.end(), out_it);
                from = text.end();
            }
            else
            {
                std::copy(from, pair.first, out_it);
                *out_it = *pair.second.begin();
                if (pair.second.size() > 2)
                    std::generate_n(out_it, pair.second.size() - 2, []() {return '*'; });
                *out_it = *pair.second.rbegin();
                from = pair.first + pair.second.size();
            }
        }
    }
 
    std::cout << newText << std::endl;
    return 0;
}
Yandex
Объявления
06.08.2015, 23:38     В тексте заменить слова "компьютер" на "к*******р"
Ответ Создать тему
Опции темы

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