C/C++

Разработать консольную программу на языке С++

Разработать консольную программу на языке С++, в которой описывается и используется простой класс для объектов индивидуального варианта. Поля данных класса должны быть закрытыми, а доступ к ним должен осуществляться с помощью открытых методов. Кроме полей с данными в классе должны быть конструкторы, деструктор и другие методы класса в соответствии с заданием. Создать массив объектов.
Student: Фамилия, Имя, Отчество, Дата рождения, Адрес, Телефон, Факультет, Курс.
Вывести:
а) список студентов заданного факультета;
б) списки студентов для каждого факультета и курса;
в) список студентов, родившихся после заданного года.
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void flush(istream& inp = cin) {
inp.ignore(numeric_limits<streamsize>::max(), '\n');
}
struct Date {
int day;
int month;
int yaer;
Date() : day(9), month(5), yaer(1945) {}
friend ostream& operator<<(ostream& out, const Date& d) {
string str;
if (d.day < 10) str += "0";
str += to_string(d.day) + ".";
if (d.month < 10) str += "0";
str += to_string(d.month) + "." + to_string(d.yaer);
return out << str;
}
friend istream& operator>>(istream& inp, Date& d) {
cout << "Число: ";
inp >> d.day; flush(inp);
cout << "Месяц: ";
inp >> d.month; flush(inp);
cout << "Год : ";
inp >> d.yaer; flush(inp);
return inp;
}
};
struct Person {
string name;
string surname;
string patrinymic;
Date birthday;
friend ostream& operator<<(ostream& out, const Person& p) {
return out << p.patrinymic << ' ' << p.name << ' ' << p.surname << ' ' << p.birthday;
}
friend istream& operator>>(istream& inp, Person& p) {
cout << "Фамилия: ";
getline(inp, p.patrinymic);
cout << "Имя: ";
getline(inp, p.name);
cout << "Отчество: ";
getline(inp, p.surname);
puts("Дата рождения:");
inp >> p.birthday;
return inp;
}
};
struct Contact {
string address;
string phone;
friend ostream& operator<<(ostream& out, const Contact& c) {
return out << c.address << ' ' << c.phone;
}
friend istream& operator>>(istream& inp, Contact& c) {
cout << "Адрес: ";
getline(inp, c.address);
cout << "Номер телефона: ";
getline(inp, c.phone);
return inp;
}
};
struct University {
string faculty;
int course;
friend ostream& operator<<(ostream& out, const University& u) {
return out << u.faculty << ' ' << u.course;
}
friend istream& operator>>(istream& inp, University& u) {
cout << "Факультет: ";
getline(inp, u.faculty);
cout << "Курс: ";
inp >> u.course;
flush(inp);
return inp;
}
};
class Student {
public:
string faculty()const {
return u.faculty;
}
int course()const {
return u.course;
}
int year()const {
return p.birthday.yaer;
}
private:
Contact c;
University u;
Person p;
friend ostream& operator<<(ostream& out, Student& s) {
return out << s.p << "\n\t" << s.c << "\n\t" << s.u;
}
friend istream& operator>>(istream& inp, Student& s) {
return inp >> s.p >> s.c >> s.u;
}
};
int main() {
system("chcp 1251 > nul");
cout << "Введите количество студентов в списке: ";
size_t n;
cin >> n;
flush();
auto list = new Student[n];
for (auto i = 0U; i < n; ++i) cin >> list[i];
cout << "Задайте факультет: ";
string faculty;
getline(cin, faculty);
for (auto i = 0U; i < n; ++i) {
if (list[i].faculty() == faculty) {
cout << list[i] << '\n';
}
}
puts("Список студентов для каждого факультета и курса");
for (auto c = 1; c <= 7; ++c) {
bool flag = false;
for (auto i = 0U; i < n; ++i) {
if (list[i].course() == c) {
cout << list[i] << '\n';
if (!flag) flag = !flag;
}
}
if (flag) puts("");
}
cout << "Задайте год рождения: ";
int year;
cin >> year;
flush();
for (auto i = 0U; i < n; ++i) {
if (list[i].year() > year) {
cout << list[i] << '\n';
}
}
delete[] list;
system("pause > nul");
}
ИТ
Иван Тт
90 052
Лучший ответ
Сергей Кишеня Здравствуйте, нужна помочь, Нужно такую же задачу сделать на языке Java. Сможете помочь ? )
Если помочь - показывай свой код и говори чего не получается
А если все сделать пока ты крабишь на миде -> fl.ru
Rysbek Taalaibekov
Rysbek Taalaibekov
78 660
Дональд Tромб А как отправить код
Нет только 3 пункта (список студентов, родившихся после заданного года) не хватает как это сделать не знаете?