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

Программа подбора персонала - C++

Восстановить пароль Регистрация
 
Petar07
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 93
08.04.2013, 11:21     Программа подбора персонала #1
Ребят, подскажите с чего тут начинать? Я не прошу написать программу))

Вот такое задание: Программа подбора сотрудников для поездки на конференцию. Для участия в конференции из коллектива сотрудников необходимо выбрать троих. Сформировать все возможные тройки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.04.2013, 11:31     Программа подбора персонала #2
Цитата Сообщение от Petar07 Посмотреть сообщение
Ребят, подскажите с чего тут начинать? Я не прошу написать программу))
Вот такое задание: Программа подбора сотрудников для поездки на конференцию. Для участия в конференции из коллектива сотрудников необходимо выбрать троих. Сформировать все возможные тройки.
Начните с построения списка. )

Простейший вариант перебора всех возможных сочетаний без повторений из трех элементов:
C++
1
2
3
4
5
6
7
for (int i = 0; i < list.size() - 2; ++i) {
  for (int j = i + 1; j < list.size() - 1; ++j) {
    for (int k = j + 1; k < list.size(); ++k) {
      std::cout << list[i] << " + " << list[j] << " + " << list[k] << std::endl;
    }
  }
}
Для N элементов будет довольно сложный алгоритм пермутаций.
Petar07
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 93
08.04.2013, 11:42  [ТС]     Программа подбора персонала #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Начните с построения списка. )

Простейший вариант перебора всех возможных сочетаний без повторений из трех элементов:
C++
1
2
3
4
5
6
7
for (int i = 0; i < list.size() - 2; ++i) {
  for (int j = i + 1; j < list.size() - 1; ++j) {
    for (int k = j + 1; k < list.size(); ++k) {
      std::cout << list[i] << " + " << list[j] << " + " << list[k] << std::endl;
    }
  }
}
Для N элементов будет довольно сложный алгоритм пермутаций.


Так значит если их будет человек 15, это уже проблематично?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.04.2013, 11:53     Программа подбора персонала #4
Да не то, чтобы... Понадобится алгоритм, создающий пермутации без повторений.
Petar07
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 93
14.04.2013, 23:01  [ТС]     Программа подбора персонала #5
а список нужно создать просто в блокноте?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
15.04.2013, 00:28     Программа подбора персонала #6
Цитата Сообщение от Petar07 Посмотреть сообщение
а список нужно создать просто в блокноте?
Да где вам задали, там и создавайте.
Может, можно просто
C++
1
2
3
4
std::vector<std::string> list;
list.push_back("Ivan Ivanov");
list.push_back("Petr Petrov");
/* и т.д. */
Petar07
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 93
19.04.2013, 22:43  [ТС]     Программа подбора персонала #7
Нужно список взять из текстового документа, как это можно организовать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 15:38     Программа подбора персонала
Еще ссылки по теме:

C++ Найти все варианты возможной замены проводов с заданной точностью подбора
C++ Написать программу подбора автомобиля
Отсортировать элементы одномерного массива по возрастанию, используя метод прямого подбора C++

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

Или воспользуйтесь поиском по форуму:
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
20.04.2013, 15:38     Программа подбора персонала #8
Цитата Сообщение от Petar07 Посмотреть сообщение
Я не прошу написать программу))
Мог бы сразу попросить программу.

Без хитрых потоков.
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
 
 
int main(int argc, char *argvp[]) {
  std::vector<std::string> names;
 
  std::ifstream input("names.txt");
 
  while (!input.eof()) {
    std::string line;
    std::getline(input, line);
    if (line.size() > 0) { // отсекание пустой строки
      names.push_back(line);
    }
  }
  
  for (size_t i = 0; i < names.size() - 2; ++i) {
    for (size_t j = i + 1; j < names.size() - 1; ++j) {
      for (size_t k = j + 1; k < names.size(); ++k) {
        std::cout << "'" << names[i] << "' + '" <<
          names[j] << "' + '" << names[k] << "'" << std::endl;
      }
    }
  }
  std::cin.get();
  return 0;
}
Пример файла names.txt:
Код
Ivan Ivanov
Petr Petrov
Vasiliy Vasilyev
Semen Semenov
Anna Annovna
Yandex
Объявления
20.04.2013, 15:38     Программа подбора персонала
Ответ Создать тему
Опции темы

Текущее время: 08:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru