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

Обработка текста, разделяемого на слова

15.06.2011, 21:39. Показов 8768. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задан текст, содержащий произвольное количество строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации(переносы не используються). Сформировать новый текст, который являеться результатом одного из следующих преобразований исходного текста: заменить заданное слово на другое слово столько раз, сколько оно встречаеться в тексте. Входные и выходные данные через файл. На экран ничего не выводить. Реализация в виде многомодульной структуры в несколько .cpp.

Помогите с заданием, а то не очень хочеться изза него из универа вылетать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2011, 21:39
Ответы с готовыми решениями:

Обработка текста, разделяемого на слова
Задание: Задан текст, содержащий произвольное количество строк, в которых отдельные слова могут разделяться одним или несколькими...

Функции, обработка текста: Задан текст; напечатать слова, отличные от последнего слова
Здравствуйте, нужна программа работающая через функции. Условие: Задан текст. Напечатать все слова, отличные от последнего слова,...

Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву
Дана последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами не менее...

32
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.06.2011, 21:50
Дай текст, слово и на что его заменить.
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.06.2011, 22:36  [ТС]
текст любой, состоящий из любых символов. слово задает пользователь на экране. то есть прога должна спросить: введите слово. слово также может быть любой символ или набор символов. затем прога спрашивает на какое слово вы хотите заменить. точно также вводишь слово любое. и потом прога заменяет второе слово на первое слово столько раз, сколько онов встречаеться в тексте. то есть если слово встречаеться в тексте 3 раза, то вместо первого слова в тексте появляються три вторых. и так с каждым первым словом. ну и вывод нового текста тоже в файл. вот. помогииии))
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.06.2011, 23:06
Ну мне лень пример для тестирования кропать, давай чё я просил.
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.06.2011, 23:09  [ТС]
123 sdfgsadg 23523 safsdffs, asdljgnsad
sdfgsadg djg7fdg glg9?ldfkng,
fdgdfbfg sdfgsadg kjdfsbg.


слово sdfgsadg заменить на слово programmirovanie
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.06.2011, 23:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <string>
#include <regex>
 
int main()
{
    std::string word, new_word, text;
    std::cout << "Enter word:\n";
    std::getline(std::cin, word, '\n');
    std::cout << "Enter new word:\n";
    std::getline(std::cin, new_word, '\n');
    std::ifstream ifile("input.txt");
    std::getline(ifile, text, '\n');
    std::regex reg(word);
    text = std::regex_replace(text, reg, new_word);
    std::ofstream ofile("output.txt");
    ofile << text;
    return 0;
}
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.06.2011, 23:40  [ТС]
#include <regex>
а без этой библиотеки нельзя?? просто мы такую не проходили на первом курсе.

Добавлено через 54 секунды
а как сделать штобы несколько файлов cpp было?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.06.2011, 23:41
Цитата Сообщение от Витька Посмотреть сообщение
#include <regex>
а без этой библиотеки нельзя?? просто мы такую не проходили на первом курсе.
учеба в ВУЗе - это самообучение
Цитата Сообщение от Витька Посмотреть сообщение
просто мы такую не проходили на первом курсе.
сомневаюсь что про такое даже на 4 курсе расскажут)
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
16.06.2011, 00:15  [ТС]
а как сделать в несколько файлов?

Добавлено через 3 минуты
блин эта прога уж очень очень замудрена. прям вообще. а можешь как нибудь подоступнее написать? не используя все таки библиотеку regex?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.06.2011, 00:27
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 <algorithm>
#include <iostream>
#include <fstream>
#include <sstream>
#include <iterator>
#include <vector>
 
int main()
{   
    std::string text, tmp, word, new_word;
    std::ifstream ifile("1.txt");
    std::getline(ifile, text, '\n');
    std::stringstream ss(text);
    std::vector<std::string> text_vec;
    while(ss >> tmp)
    text_vec.push_back(tmp);
    std::copy(text_vec.begin(), text_vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    std::cout << "Enter word:\n";
    std::getline(std::cin, word, '\n');
    std::cout << "Enter new word:\n";
    std::getline(std::cin, new_word, '\n');
    std::for_each(text_vec.begin(), text_vec.end(), [&word, &new_word](std::string & str)
    {
    if(str == word)
        str = new_word;
    });
    std::ofstream ofile("2.txt");
    std::copy(text_vec.begin(), text_vec.end(), std::ostream_iterator<std::string>(ofile, " "));
    return 0;
}
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
16.06.2011, 00:46  [ТС]
вся фишка в том што тут работа библиотек. а у нас такая тема, што нужно работать с текстом. то есть работа с массивами, строками, списками и вот тому подобное. то есть использовать стандартные библиотеки иострим ну библиотеку ввода вывода типа фстрим и все. ну может по мелочи еще што. но не такие масштабные. вот.

Добавлено через 3 минуты
ну и плюс разбиение на отдельные модули - файлы .срр . Как бэ прога сборка)))
0
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 03:52
C++
1
2
3
4
5
6
7
8
9
10
11
// myfile.cpp
int f() {
  //....
}
 
//main.cpp
//....
#include "myfile.cpp"
//...
int x = f();
//...
не понял, в чем проблема?
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
16.06.2011, 13:54  [ТС]
ну в том што я нифига не рублю в C++))) Пытаюсь разбирать и учить, но пока как то медленно двигаюсь.
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
16.06.2011, 14:10
Не надо регулярки использовать объект string в полне справиться с любой задачей с текстом.

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
#include <stdio.h>
#include <string>
 
// функция по замене слов, захват символов буквы и цифры - isalnum
void str_replace(std::string&  str, const char*  rep, const char*_new) {
    int first = 0;
    while(1) {
        int last = str.find(rep, first);
        if(last == std::string::npos)
        break;
        if( ! last) 
        goto jump;
        if( ! isalnum(str.at(last - 1)) ) {
jump:
             if(! isalnum(str.at( last + strlen(rep)) ) ) 
           str.replace(last, strlen(rep), _new);
         }
         first = last + strlen(rep);
    }
}
 
 
 
 
void  main() {
 
   std::string  str = "";
 
   // открыть файл ввода
   FILE*  fp         = fopen("X:\\input.txt", "r");
   char b[512];
   while(! feof(fp) ) {
        fgets(b, 512, fp);
        str.append(b);
   }
   fclose(fp);
 
   // изменить слово на другое
   str_replace(str, "sdfgsadg", "programmirovanie");
 
   // сохранить в файл 
   fp = fopen("X:\\print.txt", "w");
   fputs(str.c_str(), fp);
   fflush(fp);
   fclose(fp);
 
   // test
  //  puts(str.c_str());
}
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
16.06.2011, 17:51
xAtom,почему не
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 <stdio.h>
#include <string>
 
// функция по замене слов, захват символов буквы и цифры - isalnum
void str_replace(std::string&  str, const char*  rep, const char*_new) {
        int first = 0;
        while(1) {
            int last = str.find(rep, first);
            if(last == std::string::npos)
                break;
            str.replace(last, strlen(rep), _new);
            first = last + strlen(rep);
        }
}
 
 
 
 
int  main() {
 
   std::string  str = "";
 
   // открыть файл ввода
   FILE*  fp         = fopen("input.txt", "r");
   char b[512];
   while(! feof(fp) ) {
        fgets(b, 512, fp);
        str.append(b);
   }
   fclose(fp);
 
   // изменить слово на другое
   str_replace(str, "sdfgsadg", "programmirovanie");
 
   // сохранить в файл 
   fp = fopen("print.txt", "w");
   fputs(str.c_str(), fp);
   fflush(fp);
   fclose(fp);
 
   // test
  //  puts(str.c_str());
}
?
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
19.06.2011, 20:21  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
xAtom,почему не
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 <stdio.h>
#include <string>
 
// функция по замене слов, захват символов буквы и цифры - isalnum
void str_replace(std::string&  str, const char*  rep, const char*_new) {
        int first = 0;
        while(1) {
            int last = str.find(rep, first);
            if(last == std::string::npos)
                break;
            str.replace(last, strlen(rep), _new);
            first = last + strlen(rep);
        }
}
 
 
 
 
int  main() {
 
   std::string  str = "";
 
   // открыть файл ввода
   FILE*  fp         = fopen("input.txt", "r");
   char b[512];
   while(! feof(fp) ) {
        fgets(b, 512, fp);
        str.append(b);
   }
   fclose(fp);
 
   // изменить слово на другое
   str_replace(str, "sdfgsadg", "programmirovanie");
 
   // сохранить в файл 
   fp = fopen("print.txt", "w");
   fputs(str.c_str(), fp);
   fflush(fp);
   fclose(fp);
 
   // test
  //  puts(str.c_str());
}
?
А можно сделать, чтобы пользователь вручную вводил какое слово заменить и на какое слово заменить. И еще. Слово должно заменяться столько раз, сколько оно повторяеться в тексте. То есть если брать этот пример,
123 sdfgsadg 23523 safsdffs, asdljgnsad
sdfgsadg djg7fdg glg9?ldfkng,
fdgdfbfg sdfgsadg kjdfsbg.
то результат должен быть такой:
123 programmirovanieprogrammirovanieprogramm irovanie 23523 safsdffs, asdljgnsad
programmirovanieprogrammirovanieprogramm irovanie djg7fdg glg9?ldfkng,
fdgdfbfg programmirovanieprogrammirovanieprogramm irovanie kjdfsbg.
так как слово sdfgsadg встречается в тексте 3 раза.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
19.06.2011, 21:16
Вот так слова можно вводить с консоли
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
#include <windows.h>
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
 
// функция по замене слов, захват символов буквы и цифры - isalnum
void str_replace(std::string&  str, const char*  rep, const char*_new) {
        int first = 0;
        while(1) {
            int last = str.find(rep, first);
            if(last == std::string::npos)
                break;
            str.replace(last, strlen(rep), _new);
            first = last + strlen(rep);
        }
}
 
 
 
 
int  main() {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
   std::string  str = "";
 
   // открыть файл ввода
   FILE*  fp         = fopen("input.txt", "r");
   char b[512];
   while(! feof(fp) ) {
        fgets(b, 512, fp);
        str.append(b);
   }
   fclose(fp);
 
   // изменить слово на другое
   cout<< "Вводи слово, которое надо заменить и слово НА которое надо заменить"<< endl;
   string old_slovo, new_slovo;
   cin>> old_slovo>> new_slovo;
   str_replace(str, old_slovo.c_str(), new_slovo.c_str());
 
   // сохранить в файл 
   fp = fopen("print.txt", "w");
   fputs(str.c_str(), fp);
   fflush(fp);
   fclose(fp);
 
   // test
  //  puts(str.c_str());
}
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
19.06.2011, 21:19  [ТС]
а можно без библиотеки windows.h, а только стринг иострим и стдио оставить?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
19.06.2011, 21:22
Можно, она только для русского языка, убирай её и
C++
1
2
SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
Но у тебя будут кракозябры.
1
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
19.06.2011, 22:01  [ТС]
все ясно. спасибо. я транслитом напишу))) спасибо ооогромнющееее

Добавлено через 12 минут
аааааа
оно все равно заменят одно слово на одно!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.06.2011, 22:01
Помогаю со студенческими работами здесь

Вывести на экран те слова, которые отличны от последнего слова текста и первая буква этого слова входит в него еще раз
Помогите, пожалуйста, с заданием. Что-то туговато у меня идет работа со строками. Более менее я нашел последнее слово, а дальше не...

Презентация собственной реализации Разделяемого Указателя (shared_ptr)
Пришлось самому реализовывать эквивалентный shared_ptr класс, так как на винде стала повреждена библиотека языка C. Времени на...

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

Ввод текста, обработка и вывод текста в то же поле
Здравствуйте!Как сделать в delphi 10 seattle нечто вроде экспертных систем?Вводим текст (типа как в консоли), обрабатываем его, и выводим...

Обработка текста - извлечение текста в кавычках
Доброго времени суток. У меня есть код void select(WideString FileName) { if (!(FileName.IsEmpty())) { TStringList * IN_SL =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru