Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 37

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

28.07.2015, 10:58. Показов 1330. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача в текстовом файле заменить все слова "компьютер" на "к*******р". Что-то мучаюсь, не получается... Помогите, пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.07.2015, 10:58
Ответы с готовыми решениями:

Найти в тексте слова, длина которых - простое число, и заменить эти слова сообщением
Ввести текст, состоящий из нескольких предложений. В качестве разделителя слов используют пробел, точку, запятую, точку с запятой. Отделить...

В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова
Надо написать код для этой проги на Dev-C++ (если что версия 4.9.9.2) (консольное приложение), ума не приложу как это сделать. ...

В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова
В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова. Текст вводится с клавиатуры.

13
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
28.07.2015, 11:03
Покажите код, где вы мучаетесь, и у вас что-то не получается?
0
61 / 61 / 15
Регистрация: 18.05.2015
Сообщений: 322
28.07.2015, 11:07
http://www.zedwood.com/article... e-function
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 37
28.07.2015, 11:10  [ТС]
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;
}

Да вот, уже какая-то путаница
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
28.07.2015, 11:36
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;
 
}
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.07.2015, 12:27
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
for(int q = 1; q < strlen( seach ) - 1; q++)
на каждой итерации заново вычисляете длину строки
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
28.07.2015, 12:59
Я вам больше скажу - в двух циклах так
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 37
05.08.2015, 11:28  [ТС]
Задача: заменить в тексте слова "компьютер" на "к*******р"
Подскажите, что не правильно
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;
}
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
05.08.2015, 12:22
Цитата Сообщение от AleK135 Посмотреть сообщение
Подскажите, что не правильно
В двадцать второй строке происходит замена одного символа на другой. Десятый элемент массива b заносится в десятый элемент массива a.
0
55 / 48 / 13
Регистрация: 31.10.2013
Сообщений: 166
05.08.2015, 14:24
неправильно еще то, что если попадется слово например компромисс то сами понимаете часть этого слова заменится звездачками.
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 37
05.08.2015, 15:41  [ТС]
Извините, что я опять сюда обращаюсь, но сейчас все равно что-то не так...
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;
}
0
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 37
06.08.2015, 21: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;
}
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.08.2015, 21:40
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;
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
06.08.2015, 23:38
Цитата Сообщение от 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2015, 23:38
Помогаю со студенческими работами здесь

В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова
Задание: &quot;В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова.&quot;. Я пытаюсь...

Организовать принцип «Поиск и замена слов», т.е. найти в тексте все слова заданного вида, и заменить эти слова на новое
Дана строка, содержащая некоторый текст (включая пробелы и знаки препинания). Под словом понимается набор символов, не содержащий пробелов...

В тексте все слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной заменяемого слова
В процессе изучения C# столкнулась с одной задачей. Все бы ничего, но из-за требований к ее решению не получается ничего нормального...

Организовать принцип «Поиск и замена слов», т.е. найти в тексте все слова заданного вида, и заменить эти слова на заданное слово
Организовать принцип «Поиск и замена слов», т.е. найти в тексте все слова заданного вида, и заменить эти слова на заданное слово. Выделить...

Заменить слова в тексте
Простое, наверное, задание Но я никак сама сделать не могу и в интернете нужных примеров не нашла:( Нужно (в pascal abc) в тексте...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru