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

Узнать количество повторений каждого элемента вектора

06.03.2022, 17:14. Показов 875. Ответов 4

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

задача такая, что из текстового файла, имя которого задает пользователь, слова находящиеся в файле нужно вывести отсортировав по алфавиту(это получилось) и показать число повторений слов игнорируя регистр.
с векторами работаю первый раз, так что буду рад любому совету! ;3
вот код который имеется:

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
#include <vector>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <string>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // вводим имя файла 
    string path;
    path = "text.txt";
    //cout << "введите назание файла" << endl;
    //getline(cin, path);
 
    fstream Dictionary;
    Dictionary.open(path, fstream::in | fstream::app | fstream::out);
 
    if (!Dictionary.is_open())
    {
        cout << "ошибка открытия " << endl;
    }
    else
    {
        cout << "файл открыт" << endl;
        string msg;
        string ch;
        // поместили данные из файла в вектор 
        vector <string> myVector;
        while (getline(Dictionary, ch))
        {
            myVector.push_back(ch);
        }
 
        // с этого моента начали работать с вектором    myVector
        
 
        sort(myVector.begin(), myVector.end());
        for (int i = 0; i < myVector.size(); i++)
        {
            cout << myVector[i] << endl;
 
        }
                  Dictionary.close();
    }
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2022, 17:14
Ответы с готовыми решениями:

Вычислить количество повторений каждого элемента вектора
C++ ______________________________________________________________________ //// Составьте алгоритм и программу обработки матрицы...

Определить количество повторений каждого элемента массива
Помогите пожалуйста, нужно найти количество повторений каждого елемента масива на языке си

Найти количество повторений каждого элемента массива
помогите, пожалуйста, написать программу в с++, срочно надо &quot;Ввести значення елементів одновимірного масиву, задавши попередньо їх...

4
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
06.03.2022, 19:29
Найти количество повторений каждого элемента последовательности
0
 Аватар для igorrr37
2888 / 2035 / 992
Регистрация: 21.12.2010
Сообщений: 3,787
Записей в блоге: 9
07.03.2022, 02: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
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
#include <vector>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <string>
#include <cctype>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // вводим имя файла 
    string path;
    path = "in.txt";
    //cout << "введите назание файла" << endl;
    //getline(cin, path);
 
    fstream Dictionary;
    Dictionary.open(path, fstream::in | fstream::app | fstream::out);
 
    if (!Dictionary.is_open())
    {
        cout << "ошибка открытия " << endl;
    }
    else
    {
        cout << "файл открыт" << endl;
        string msg;
        string ch;
        // поместили данные из файла в вектор 
        vector <string> myVector;
        while (getline(Dictionary, ch))
        {
            myVector.push_back(ch);
        }
        Dictionary.close();
        // с этого моента начали работать с вектором    myVector
 
 
        sort(myVector.begin(), myVector.end());
        for (auto& str : myVector)
        {
            cout << str << endl;
            std::transform(str.begin(), str.end(), str.begin(), [](char c) {return std::tolower((unsigned char)c); });
        }
        sort(myVector.begin(), myVector.end());
        for (auto ib{ myVector.begin() }, it = ib; ib != myVector.end(); ib = it)
        {
            it = std::upper_bound(it, myVector.end(), *ib);
            std::cout << *ib << ": " << (it - ib) << "\n";
        }
        
    }
}
0
2 / 1 / 1
Регистрация: 01.12.2021
Сообщений: 29
07.03.2022, 13:49  [ТС]
спасибо большое, но не могли бы вы немного детальней объснить, как работает код начиная с 44 строки, не совсем понимаю тела 2х циклов
0
 Аватар для igorrr37
2888 / 2035 / 992
Регистрация: 21.12.2010
Сообщений: 3,787
Записей в блоге: 9
07.03.2022, 14:04
в 48й строке каждый элемент вектора приводится к нижнему регистру ф-цией tolower, в 50й строке вектор опять сортируется, и в последнем цикле двоичным поиском (upper_bound) в отсортированном векторе находим цепочки одинаковых слов, it, ib - итераторы на начало и конец цепочки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2022, 14:04
Помогаю со студенческими работами здесь

Найти количество повторений каждого элемента последовательности
Напишите программу, которая получает на входе N натуральное число, а затем последовательность из N элементов. Требуется указать количество...

Посчитать количество повторений каждого элемента заданного массива
Вот у меня есть массив. Вводим элементы, например: 1, 1, 2, 3, 3 И мне нужно посчитать количество повторений каждого элемента, то...

Почему неправильно считает количество повторений каждого элемента матрицы?
Почему неправильно считает количество повторений каждого элемента матрицы? Помогите разобраться. #include &quot;stdafx.h&quot; ...

Вычислить количество повторений каждого элемента вектора
Составьте алгоритм и программу обработки матрицы произвольного размера. Выведите на экран исходные данные в виде матрицы Вычислить ...

Найти количество повторений каждого элемента
я смог только начать писать, а дальше не могу додуматься. помогите :с a,n=list(map(int, input().split())) m=*n for i in range(n): ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru