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

Задан текстовый файл. Переписать повторяющиеся слова из этого файла в другой

29.06.2022, 22:44. Показов 754. Ответов 2

Студворк — интернет-сервис помощи студентам
Прошу помощи с очередным заданием.
Задача: Задан текстовый файл f1. Переписать повторяющиеся слова из этого файла в файл f2. Использовать функции, а также меню для выбора существующего или вновь создаваемого файла.
Проблема заключается в том, что при попытках ввести несколько слов в созданный файл через cin, считывается очевидно только первое слово. При попытках ввести строку со словами, используя getline(cin, text), программа не дает вообще ничего ввести, кто-нибудь объясните пожалуйста, из-за чего так происходит.
Заранее спасибо.

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <Windows.h>
 
using namespace std;
 
void Menu(fstream(&file), string(&name), string(&msg))
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int value = 0;
    cout << "Ispolzovat suschestvuyushiy file ili sozdat noviy? " << endl;
    cout << "Esli sush. - 1, esli noviy - 2: " << endl;
    ofstream fout;
    cin >> value;
    if (value == 1)
    {
        file.open("f1.txt", fstream::in | fstream::out | ofstream::trunc);
        cout << "Vvedite text bez znakov " << endl;
        getline(cin, msg);
        file << msg;
        file.close();
    }
    else
    {
        fout.open("f1.txt");
        cout << "Vvedite text bez znakov (ENG): " << endl;
        string text;
        getline(cin, text);
        fout << text;
    }
    fout.close();
}
 
// Выводит сообщение об ошибке
void Error(string s1, string s2)
{
    cerr << s1 + s2 << endl;
}
 
// Заполняет вектор данными из файла iname
void Read_File(vector<string>& st, string iname)
{
    ifstream ist{ iname };
    if (!ist) Error("Vhodnoy file ", iname);
 
    for (string s; ist >> s; )
        st.push_back(s);
}
 
// Записывает вектор в файл oname
void Write_File(vector<string>& st, string oname)
{
    ofstream ost{ oname };
    if (!ost) Error("Vihodnoy file ", oname);
 
    for (string s : st)
        ost << s << endl;
}
 
// Записывает в вектор reiteration повторяющиеся значения abc
void Reiter(vector<string>& abc, vector<string>& reiteration)
{
    // Сортируем вектор в алфавитном порядке
    sort(abc.begin(), abc.end());
 
    // Находим одинаковые элементы
    int size = abc.size();
    for (int i = 0; i < size - 1; ++i)
        if (abc[i] == abc[i + 1])
            reiteration.push_back(abc[i]);
 
    // Удаляем повторы если есть
    reiteration.resize(unique(reiteration.begin(), reiteration.end()) - reiteration.begin());
}
 
 
int main()
{
   
    string msg;
    string name = "f1.txt";
    fstream file;
    Menu(file, name, msg);
    
    vector<string> abc;
    vector<string> reiteration;
 
    Read_File(abc, "f1.txt");
    Reiter(abc, reiteration);
    Write_File(reiteration, "f2.txt");
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2022, 22:44
Ответы с готовыми решениями:

Задан текстовый файл f1. Переписать повторяющиеся слова этого файла в файл f2
:-[O_o Помогите пожалуйста, скоро экзамен, боюсь не сдать... &quot;Задан текстовый файл f1. Переписать повторяющиеся слова этого файла в файл...

Задан текстовый файл f1. Переписать повторяющиеся слова этого файла в файл f2
Задан текстовый файл f1. Переписать повторяющиеся слова этого файла в файл f2. Использовать функции, а также меню для выбора существующего...

Переписать повторяющиеся слова этого файла в файл 2
Не могу разобраться как сделать такой тип задания. задан текстовый файл f1. Переписать повторяющиеся слова этого файла в файл 2...

2
 Аватар для Наталья8
621 / 379 / 67
Регистрация: 09.03.2016
Сообщений: 4,074
30.06.2022, 01:55
Лучший ответ Сообщение было отмечено over9rk как решение

Решение

У вас нет ни одной рабочей функции.
Эту хрень надо писать за ново.
Причём наверное в вашем стиле???

Добавлено через 59 минут
Вроде работает. Может чего ещё там не так?

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <Windows.h>
 
using namespace std;
 
void Menu(fstream(&file), string(&name), string(&msg))
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int value = 0;
    cout << "Ispolzovat suschestvuyushiy file ili sozdat noviy? " << endl;
    cout << "Esli sush. - 1, esli noviy - 2: " << endl;
    ofstream fout;
    std::cin.clear();
    cin >> value;
    if (value == 1)
    {
        file.open("f1.txt", fstream::in | fstream::out | ofstream::trunc);
        cout << "Vvedite text bez znakov " << endl;
        std::cin.ignore();
        getline(cin, msg);
        file << msg;
        file.close();
    }
    else{
        fout.open("f1.txt");
        cout << "Vvedite text bez znakov (ENG): " << endl;
        string text;
        std::cin.ignore();
        getline(cin, text);
        fout << text;
    }
    fout.close();
}
 
// Выводит сообщение об ошибке
void Error(string s1, string s2)
{
    cerr << s1 + s2 << endl;
}
 
// Заполняет вектор данными из файла iname
void Read_File(vector<string>& st, string iname)
{
    ifstream ist{ iname };
    if (!ist) Error("Vhodnoy file ", iname);
//Считывание строки закончится, если появится пробел или конец строки.
    for (string s; ist >> s;)
        st.push_back(s);
}
 
// Записывает вектор в файл oname
void Write_File(vector<string>& st, string oname)
{
    ofstream ost{ oname };
    if (!ost) Error("Vihodnoy file ", oname);
for (string s : st)
        ost << s << endl;
}
 
// Записывает в вектор reiteration повторяющиеся значения abc
void Reiter(vector<string>& abc, vector<string>& reiteration)
{
    // Сортируем вектор в алфавитном порядке
    sort(abc.begin(), abc.end());
    // Находим одинаковые элементы
for (int i = 0; i < abc.size() - 1; ++i)
    if (abc[i] == abc[i + 1])
        reiteration.push_back(abc[i]);
 
    // Удаляем повторы если есть
    reiteration.resize(unique(reiteration.begin(), reiteration.end()) - reiteration.begin());
}
 
 
int main()
{
    string msg;
    string name = "f1.txt";
    fstream file;
    Menu(file, name, msg);
 
    vector<string> abc;
    vector<string> reiteration;
 
    Read_File(abc, "f1.txt");
    Reiter(abc, reiteration);
    Write_File(reiteration, "f2.txt");
}
1
0 / 0 / 0
Регистрация: 03.01.2020
Сообщений: 17
30.06.2022, 02:02  [ТС]
Наталья8, Спасибо Вам большое, все это время пытался разобраться в том бардаке, который получился. Так и не разобрался, но благодаря Вам все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2022, 02:02
Помогаю со студенческими работами здесь

Задан текстовый файл. Переписать в другой файл, те строки из первого файла, которые содержат менее 5 слов
Помогите решить задачу пожалуйста! Заданный текстовый файл. Переписать в другой файл, те строки из первого файла, которые содержат менее...

Все повторяющиеся слова файла переписать в другой файл удалив их из созданного
Создать текстовый файл. Все повторяющиеся слова этого файла переписать в другой файл удалив их из созданного.(дополнительных массивов не...

Из исходного текстового файла все повторяющиеся слова переписать в другой файл удалив их из исходного
из исходного текстового файла все повторяющиеся слова переписать в другой файл удалив их из исходного. Дополнительных массивов не...

Переписать повторяющиеся слова в другой файл
задан файл f1. переписать повторяющиеся слова в файл f2 заданные слова в файле &quot;дом ручка дом радел&quot; Помогите пожалуйста! не...

Задан текстовый файл f. Переписать в новый файл g все слова, которые начинаются с буквы к
Задан текстовый файл f. Переписать в новый файл g все слова, которые начинаются с буквы к.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
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. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru