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

Вывести характеристики юношей, попавших под призыв в армию - C++

Восстановить пароль Регистрация
 
Ру
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 19
08.01.2013, 12:56     Вывести характеристики юношей, попавших под призыв в армию #1
Военкомат содержит список допризывной молодежи в виде: Ф.И.О., год рождения, месяц рождения, количество детей. По вводу текущей даты выводить на экран все характеристики юношей, попадающих под призыв в армию. (Призываться могут юноши в возрасте старше 18 лет и имеющие менее 2-х детей). Список выдавать по убыванию возрастов.
Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 12:56     Вывести характеристики юношей, попавших под призыв в армию
Посмотрите здесь:

C++ Посчитать к-во точек, попавших в круг с радиусом R и с центром в начале координат
C++ Как вывести символ под s[i]
Вывести полное имя программы, под которым она была запущена. C++
Сист. Характеристики С++ C++
Вывести на экран матрицу и вычислить суммы элементов над и под главной диагональю. C++
C++ Вывести фамилии студентов, которые не получают стипендию и их перечень дисциплин (переделать под объединение и перечисление)
C++ Вывести на экран числа 5, 10 и 21 одно под другим
Подскажите как вывести два массива рядом, а не под друг другом C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.01.2013, 17:06     Вывести характеристики юношей, попавших под призыв в армию #2
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <string>
#include <iostream>
 
// класс, описывающий юношу
class Youth {
 public:
  Youth(const std::string &name, int yearOfBirth, int monthOfBirth,
    int numberOfKids) : name(name), yearOfBirth(yearOfBirth),
    monthOfBirth(monthOfBirth), numberOfKids(numberOfKids) {}
  const std::string &getName() const { return name; }
  int getYearOfBirth() const { return yearOfBirth; }
  int getMonthOfBirth() const { return monthOfBirth; }
  int getNumberOfKids() const { return numberOfKids; }
  int getFullYearsOn(int year, int month) {
    return (year - getYearOfBirth()) + ((month < getMonthOfBirth())? -1 : 0);
  }
 private:
  std::string name;
  int yearOfBirth;
  int monthOfBirth;
  int numberOfKids;
};
 
std::ostream &operator<<(std::ostream &stream, const Youth &youth) {
  return stream << "Youth{" <<
    "name=" << youth.getName() << "," <<
    "yearOfBirth=" << youth.getYearOfBirth() << "," <<
    "monthOfBirth=" << youth.getMonthOfBirth() << "," <<
    "numberOfKids=" << youth.getNumberOfKids() << "}";
}
 
// функция, сравнивающая два объекта
int compareByAge(Youth &a, Youth &b) {
  if (a.getYearOfBirth() == b.getYearOfBirth())
    return a.getMonthOfBirth() - b.getMonthOfBirth();
  return a.getYearOfBirth() - b.getYearOfBirth();
}
 
// обмен значений двух переменных
void swap(Youth &a, Youth &b) {
  if (&a != &b) {
    Youth c = a;
    a = b;
    b = c;
  }
}
 
// быстрая сортировка
void sort(Youth *begin, Youth *end, int (*compare)(Youth&, Youth&)) {
  Youth *pivot = begin + ((end - begin) >> 1),
    *i = begin, 
    *j = end - 1;
 
  do {
    while (compare(*i, *pivot) < 0) ++i;
    while (compare(*pivot, *j) < 0) --j;
    
    if (i <= j) {
      swap(*i, *j);
      ++i; --j;
    }
  } while (i <= j);
 
  if (j > begin) sort(begin, j + 1, compare);
  if (i < (end - 1)) sort(i, end, compare);
}
 
int main(int argc, char *argv[]) {
 
  Youth men[] = { Youth("Ivan", 1982, 9, 1), Youth("Petr", 1981, 3, 0),
    Youth("Nikolay", 1982, 3, 2), Youth("Fedor", 1981, 4, 1), 
    Youth("Alexander", 1983, 7, 0), Youth("Igor", 1980, 6, 1), 
    Youth("Nikolay", 1982, 1, 3), Youth("Alexey", 1983, 2, 0)
  };
  int numberOfMen = sizeof(men) / sizeof(men[0]);
 
  std::cout << "All men:" << std::endl;
  for (int i = 0; i < numberOfMen; ++i) {
    std::cout << men[i] << " years: " << men[i].getFullYearsOn(2000, 01) << std::endl;
  }
 
  sort(men, men+numberOfMen, compareByAge);
 
  // вот эти переменные отвечают за
  // год призыва
  int yearOfConscript = 2000;
  // месяц призыва
  int monthOfConscript = 2;
 
  std::cout << "Conscripts:" << std::endl;
  for (int i = 0; i < numberOfMen; ++i) {
    if (men[i].getFullYearsOn(yearOfConscript, monthOfConscript) >= 18 &&
      men[i].getNumberOfKids() < 2) {
      std::cout << men[i] << " years: " << men[i].getFullYearsOn(2000, 01) << std::endl;
    }
  }
 
  std::cin.peek();
  return 0;
}
Yandex
Объявления
14.01.2013, 17:06     Вывести характеристики юношей, попавших под призыв в армию
Ответ Создать тему
Опции темы

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