Форум программистов, компьютерный форум CyberForum.ru

Подсчитать количество значений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Пасхалка http://www.cyberforum.ru/cpp-beginners/thread956791.html
Всем привет. Какую безобидную пасхалку можно придумать?)) Какую пасхалку можно придумать в лабе? Чисто для фана
C++ Получить третий файл, содержащий чётные строки первого файла и нечётные строки второго файла Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго файла. Вообще не имею понятия, как проверяют чётность и нечётность строк. Помогите пожалуйста. Если можно и на паскале. http://www.cyberforum.ru/cpp-beginners/thread956786.html
C++ реализация итератора
Реализация класса List и его итератора: #ifndef LIST_H #define LIST_H #include<iostream> template<class T> class List {
результат сложения двух соседних чисел в последовательности C++
Здравствуйте! Помогите пожалуйста, нужно задачу на завтра сделать, никак не дойдет как. Объясните если не трудно Ввести с клавиатуры последовательность чисел и вывести результат сложения двух соседних чисел в последовательности (последнее число не имеет соседа)
C++ Анализатор строки http://www.cyberforum.ru/cpp-beginners/thread956746.html
Программа должна обработать строку AA;AA(AA;AA) из файла и вывести что все нормально. Но у меня не получается. Действия выполняются рекуривно т.е. функции вызывают друг друга. Вот код. Посмотрите свежим взглядом, а то уже запутался. #include <fstream> #include <iostream> #include <string> using namespace std; bool Start(ifstream &fin); //Старт bool SA(ifstream &fin); //Обработка А
C++ Дописать программу с использованием пользовательской функции Помогите переписать эту программу, но уже с пользовательской функцией! #include <vcl.h> #include <tchar.h> #include <iostream.h> #include <math.h> #include <conio.h> void main(void) { double x,P=1,i; подробнее

Показать сообщение отдельно
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
18.09.2013, 03:55     Подсчитать количество значений
Цитата Сообщение от nedsi Посмотреть сообщение
Есть задача : вводятся с клавиатуры фамилии N кандидатов, подсчитать, сколько раз была введена каждая фамилия.
Подойдет для небольшого количества кандидатов так как используется метод поиска в векторе - простой перебор элементов вектора.
Если есть вероятность, что кандидатов тысячи и тысячи, то поиск лучше производить в отсортированном векторе.
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
//============================================================================
// Name        : surname_counter.cpp
// Author      : UranFlex
// Version     : 0.1 alpha
// License     : Free
// Description : вводятся с клавиатуры фамилии N кандидатов, подсчитать, сколько раз была введена каждая фамилия
//               C++, Ansi-style
//============================================================================
 
#include <iostream>
#include <vector>
#include <utility>
 
using namespace std;
// объявляем тип пара, которая содержит фамилию и счетчик ввода - т.е. сколько раз вводили фамилию
typedef pair < string, unsigned > Candidate;
 
// функция для вывода вектора
void PrintResults( const vector < Candidate > &);
 
int main() {
    vector < Candidate > candidate; // вектор, в который будем заносить фамилии кандидатов
 
    // рассказываем пользователю как закончить ввод фамилий
    cout << "Для того чтобы закончить ввод фамилий введите quit" << endl;
 
    while ( true ){ // запускаем бесконечный цикл
        string surname; // буфер для вводимой фамилии
        bool flag = true; // думаем, что будет введена новая фамилия
 
        cout << "Введите фамилию кандидата" << endl;
        getline( cin, surname ); // считываем введенную фамилию
 
        if( surname == "quit" ) // проверяем вдруг ввели quit
            break; // если так, то обрываем бесконечный цикл
 
        // а если ввели не quit, то далее в цикле перебираем все введенные фамилии
        for( vector< Candidate >::iterator it = candidate.begin(); it != candidate.end(); ++it )
            if( it->first == surname ){ // и сравниваем каждую фамилию с той, которую ввели только что
                ++it->second; // если такая фамилия уже вводилась ранее увеличиваем счетчик ввода
                flag = false; // и запоминаем это
                break; // обрываем цикл перебора фамилий
            }
 
        if ( !flag ) // если только что введенная фамилия не является новой, то ее не нужно добавлять в вектор
            continue; // потому возвращаемся в начало бесконечного цикла для ввода еще одной фамилии
 
        // а если только что введенная фамилия - новая, то добавляем ее в вектор.
        candidate.push_back( Candidate( surname, 1 ) );
 
    }
 
    PrintResults( candidate ); // выводим результаты
 
    return 0;
}
 
 
void PrintResults( const vector < Candidate > &vec ){
    for( vector< Candidate >::const_iterator it = vec.begin(); it != vec.end(); ++it )
        cout << it->first << "  " << it->second << endl;
}
Кликните здесь для просмотра всего текста
Для того чтобы закончить ввод фамилий введите quit
Введите фамилию кандидата
Иванов
Введите фамилию кандидата
Петров
Введите фамилию кандидата
Иванов
Введите фамилию кандидата
Петров
Введите фамилию кандидата
Сидоров
Введите фамилию кандидата
Петров
Введите фамилию кандидата
Плюшкин
Введите фамилию кандидата
Кошкин
Введите фамилию кандидата
Петров
Введите фамилию кандидата
quit
Иванов 2
Петров 4
Сидоров 1
Плюшкин 1
Кошкин 1
 
Текущее время: 00:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru