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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составление фунций с точностью http://www.cyberforum.ru/cpp-beginners/thread755553.html
Составить функцию, которая вычисляет сумму ряда с заданной точностью ε(0<ε<=1) . Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше чем ε . ...
C++ Регулярное выражение для парсинга слов, заключенных в звездочки помогите составить регулярное. Необходимо, чтобы оно выдергивало из текста слова, расположенных между звездочек например: текст : abs *ult* ghf *stk*. Fhht *ghfgh*, *fghfgh*. должно вернуть:... http://www.cyberforum.ru/cpp-beginners/thread755548.html
C++ Составление фунций(статистическое распределение памяти)
Составить функцию, которая, получив число А и массив из N целых чисел, анализирует массив. Если сумма всех элементов массива отрицательна, то функция формирует новый массив, поместив в него те...
C++ Составление фунций
Задача 1. Составить функцию countR, которая, получив s и g через параметры по значению, а h через глобальный объект, вычисляет r и возвращает его через параметр по ссылке. ...
C++ Как сделать массив указателей на функции константным? http://www.cyberforum.ru/cpp-beginners/thread755521.html
Где нужно вставить слово const чтобы этот массив был константным? По разному пробовал и постоянно ошибки double (*ptr_Func)(double, double) = {Sum, Sub, Mul, Div};
C++ сортировка элементов в строках с положительной суммой элементов помогите кто может: Задана матрица целых чисел. Выполнить сортировку элементов матрицы по возрастанию, в строках сумма элементов которых положительная. подробнее

Показать сообщение отдельно
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
14.01.2013, 17:06
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;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru