Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для SeeT
55 / 25 / 3
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1

Сравнить строки из файла между собой

24.12.2014, 18:24. Показов 3384. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хорошего всем настроения.

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

Работаю со строками типа string

Вообще изначально задание такое: "подcчитать в текcте количество cлов (+), их длину, а также количеcтво повторяющихcя слов".
Программа из введенной строки убирает лишние знаки препинания и мусор, делит всю строку на слова и поочередно вписывает их в файл. Т.е. мы имеем файл разбитый на слова и общее количество слов. А как дальше сравнивать их между собой, находить длину я не понимаю.

Может стоило их вписывать не в файл, а в вектора например? И потом уже работать с векторами, как с отдельными переменными? Подскажите.

Вот код

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 <string>
#include <sstream>
#include <Windows.h> // для работы SetConsoleCP, SetConsoleOutputCP
#include <fstream>
using namespace std;
 
int main() {
SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
setlocale(LC_ALL,"Rus"); // Подключение русского языка
 
int numWord;
 
    string str;
    getline(cin, str); // cin в строку s
 
    istringstream stream(str);
    ofstream in; // открываем на запись
    in.open("in.txt");
    // также найдем количество слов в файле
    for (string word; stream >> word; in << word << endl && numWord++)
    in << cout;
    in.close(); // закрываем
    numWord=numWord-2003392618; // костыль:3
    cout << "В тексте " << numWord << " слов.";
 
return 0;
}
Добавлено через 7 минут
Прошу, может подкинете идей и функций через которое все это криворукое дело можно реализовать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2014, 18:24
Ответы с готовыми решениями:

Как сравнить две даты между собой?
Есть структура типа: struct date { unsigned int day, month, year; } Как сравнить две такие даты между собой?

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

Получить строку, представляющую собой конкатенацию двух строк. Определить длину строки. Сравнить эти строки
Динамические строки и массивы строк Получить строку, представляющую собой конкатенацию двух строк. Определить длину строки. Сравнить два...

4
76 / 76 / 32
Регистрация: 14.04.2014
Сообщений: 408
24.12.2014, 18:36
Да, стоит создать
vector<string> words;
и работать с ним

Добавлено через 1 минуту
Цитата Сообщение от SeeT Посмотреть сообщение
numWord=numWord-2003392618; // костыль:3
убери это ужас, и напиши в 13 строке
C++
1
int numWord(0);
1
 Аватар для SeeT
55 / 25 / 3
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1
24.12.2014, 18:41  [ТС]
Цитата Сообщение от Fallenworld Посмотреть сообщение
убери это ужас, и напиши в 13 строке
Воооу! спасибо огромное! А не мог бы описать, чем numWord=0 отличается от numWord(0)
C векторами вот как раз разбираюсь сижу)
0
76 / 76 / 32
Регистрация: 14.04.2014
Сообщений: 408
24.12.2014, 18:44
Цитата Сообщение от SeeT Посмотреть сообщение
чем numWord=0 отличается от numWord(0)
в первом случае ты создаешь неинициализированную переменную, а потом присваеваешь ей значение.
во втором ты инициализируешь переменную значением.
Для инта пофигу, для больших обьектов с разными конструкторами - нет.
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.12.2014, 19:07
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
#include <unordered_set>
 
int main()
{
    using input_str = std::istream_iterator < std::string > ;
    std::unordered_multiset<std::string> words((input_str(std::ifstream("input.txt"))), input_str());
    std::unordered_set<std::string> uniqueWords(words.cbegin(), words.cend());
 
    std::cout << "Words: " << words.size()
        << "\nDuplicates: " << words.size() - uniqueWords.size()
        << "\nWords length:\n";
    for (const auto &word : uniqueWords)
        std::cout << word << " -> " << word.length() << std::endl;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2014, 19:07
Помогаю со студенческими работами здесь

Сравнить элементы ассоциативного массива между собой
Приветствую! Есть массив следующего вида: $response = array( &quot;A1F1&quot; =&gt; '2', &quot;A1F2&quot; =&gt; '3', ...

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

Создать две последовательности данных и сравнить их между собой
Создать две последовательности данных и сравните их между собой всеми операторами сравнения.

Сравнить между собой два одномерных массива поэлементно
сравнить между собой два одномерных массива поэлементно (т.е a-b, a-b) и передать в третий min элемент

подсчитать среднее арифметическое элементов и сравнить между собой.
Введите с клавиатуры одномерный массив S(B), элементами которого являются по- ложительные и отрицательные целые числа. Сформируйте массив...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru