Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.02.2020
Сообщений: 10
1

Скопировать из файла FILE1 в файл FILE2 все строки, в которых содержится не менее двух одинаковых слов

19.02.2020, 14:27. Показов 2329. Ответов 2

Помогите решить задачу, пожалуйста. Условие: Скопировать из файла FILE1 в файл FILE2 все строки, в которых содержится не менее двух одинаковых слов. Определить номер слова, в котором больше всего цифр

Добавлено через 3 часа 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
int first()
{
    ifstream in("f1_first.txt");
    ofstream out("f2_first.txt");
    string line, tmpWord, word;
    while (getline(in, line))
    {
        stringstream ss(line);
        bool hasEquals = false;
        ss >> tmpWord;
        while (ss >> word)
        {
            if (word == tmpWord)
            {
                hasEquals = true;
                break;
            }
        }
        if (hasEquals) out << line << endl;
    }
    in.close();
    out.close();
    return 0;
}
Тут есть сравнение первого слова с остальными словами в строке и последующая запись во второй файл, но как подставить на место tmpWord следующее слово?
0
Лучшие ответы (1)
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2020, 14:27
Ответы с готовыми решениями:

Скопировать из файла F1 в файл F2 все строки в которых нет одинаковых слов
Скопировать из файла F1 в файл F2 все строки в которых нет одинаковых слов

Файл: Скопировать из File_1 в File_2 все строки, в которых нет одинаковых слов...
Скопировать из File_1 в File_2 все строки, в которых нет одинаковых слов. Определить количество...

Заполнить заранее созданный file1, и из этого файла скопировать содержимое в заранее созданный file2
Суть проги в том,чтобы я заполнил заранее созданный file1 из консоли и из этого файла содержимое...

Скопировать текстовые файлы file1 file2 file3 file4 в домашней папке в директорию dir2 с использованием шаблона имен
Как скопировать текстовые файлы file1 file2 file3 file4 в домашней папке в директорию dir2 с...

2
807 / 496 / 209
Регистрация: 19.01.2019
Сообщений: 1,194
19.02.2020, 15:24 2
Лучший ответ Сообщение было отмечено KriSWhitch как решение

Решение

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 <unordered_set>
#include <string>
#include <fstream>
#include <sstream>
 
int main()
{
    std::ifstream is("input.txt");
    std::ofstream os("output.txt");
    if (!is || !os) return 1;
    std::string str, word;
    std::unordered_set<std::string> uset;
 
    while (std::getline(is, str)) {
        uset.clear();
        std::stringstream ss(str);
 
        while (ss >> word) {
            if (!uset.insert(word).second) {
                os << str << '\n';
                break;
            }
        }
    }
 
    is.close();
    os.close();
    return 0;
}
2
0 / 0 / 0
Регистрация: 19.02.2020
Сообщений: 10
19.02.2020, 21:21  [ТС] 3
Большое спасибо за помощь!

Добавлено через 52 минуты
Вот итоговый код задания, в нём так же есть возможность вывести слово с максимальным количеством букв латинских

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
int first()
{   //копирование из файла F1 в файл F2 строк, которые содержат не менее двух одинаковых слов
    ifstream is("f1_first.txt");
    ofstream os("f2_first.txt");
    if (!is || !os) return 1;
    string str, word;
    unordered_set<string> uset;
    while (getline(is, str)) {
        uset.clear();
        stringstream ss(str);
 
        while (ss >> word) {
            if (!uset.insert(word).second) {
                os << str << '\n';
                break;
            }
        }
    }
    is.close();
    os.close();
    //Определяем номер слова, в котором больше всего цифр
    ifstream isss("f1_first.txt");
    string str1;
    while (getline(isss, str1)) {
        string s, word, mostDig, mostLet;
        int i, count_letters, count_digits, max_letters = 0, max_digits = 0;
        stringstream words(str1);
        while (isss >> word) {
            i = 0;
            count_letters = 0;
            count_digits = 0;
            while (word[i])
            {
                if (word[i] >= '0' && word[i] <= '9') count_digits++;
                if ((word[i] >= 'a' && word[i] <= 'z') || (word[i] >= 'A' && word[i] <= 'Z')) count_letters++;
                i++;
            }
            if (count_digits > max_digits) { max_digits = count_digits; mostDig = word; }
            if (count_letters > max_letters) { max_letters = count_letters; mostLet = word; }
        }
        cout << "Word with max digits: " << mostDig;
    }
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2020, 21:21

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Скопировать из файла F1 в файл F2 все строки, в которых есть слова, совпадающие с первым словом
Скопировать из файла F1 в файл F2 все строки, в которых есть слова, совпадающие с первым сло-вом....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.