1. Составить приложение, которое позволяет пользователю работать с
информацией определенной структуры. Все данные хранить в
«хранилища» – массивные структур. Пользователь не может ввести
более 30 структур. Массив объявить Глобальным.
2. Предложить пользователю по выбору следующие действия:
a. добавить информацию в хранилище
b. выполнить обработку «хранилища» в соответствии с варианту
c. напечатать всю информацию, содержащуюся в массиве
d. закончить работу программы
3. Пользователь работает с программой, пока не выберет команду
выхода из программы.
Задание:
«Сотрудник »: фамилия, год рождение, год принятие на работу, количество детей., оклад.
Определить средний возраст работников.
C/C++
Прошу помогите написать код на c++, нужно сдать сегодня ?
В среде Visual Studio 2019 и выше с настройкой поддержки стандарта C++20 эта галиматья работать будет.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <array>
#include <string>
#include <iomanip>
#include <conio.h>
#include <chrono>
#include <ctime>
using namespace std;
using namespace chrono;
void flush() {
cin.ignore(numeric_limits<int>::max(), '\n');
}
int int_parse(const char* message) {
auto value = 0;
cout << message;
cin >> value;
flush();
return value;
}
struct Employee {
int year_of_birth;
int year_of_employment;
int amount_of_children;
int salary;
string surname;
};
array<Employee, 30> list{};
void add() {
Employee employee;
cout << "Фамилия: ";
getline(cin, employee.surname);
employee.year_of_birth = int_parse("Год рождения: ");
employee.year_of_employment = int_parse("Год принятия на работу: ");
employee.amount_of_children = int_parse("Количество детей: ");
employee.salary = int_parse("Оклад: ");
for (auto& item : list) {
if (item.surname.empty()) {
item = employee;
break;
}
}
}
double average(int year) {
auto sum = 0.0;
auto count = 0U;
for (const auto& item : list) {
if (item.surname.empty()) break;
sum += year - item.year_of_birth;
++count;
}
auto avg = 0.0;
if (count != 0U) {
avg = sum / count;
}
return avg;
}
void show() {
auto count = 0U;
for (const auto& item : list) {
if (item.surname.empty()) break;
cout << setw(3U) << ++count << ". "
<< item.surname << "\n\t"
<< "Дата рождения: " << item.year_of_birth << "\n\t"
<< "Дата приёма на работу: " << item.year_of_employment << "\n\t"
<< "Количество детей: " << item.amount_of_children << "\n\t"
<< "Оклад: " << item.salary << "\n\n";
}
}
void finish() {
exit(0);
}
void menu() {
cout
<< "a. добавить информацию в хранилище\n"
<< "b. определить средний возраст\n"
<< "c. напечатать всю информацию, содержащуюся в массиве\n"
<< "d. закончить работу программы\n";
}
void run() {
system("chcp 1251 > nul");
while (true) {
menu();
auto choice = _getch();
if (choice == 97 || choice == 244) {
add();
} else if (choice == 98 || choice == 232) {
const auto last_time = system_clock::to_time_t(system_clock::now());
const auto time_line = string(ctime(&last_time));
const auto current_year = stoi(string(time_line.cend() - 5, time_line.cend()));
const auto avg = average(current_year);
cout << "Средний возраст: " << fixed << setprecision(1) << avg << '\n';
} else if (choice == 99 || choice == 241) {
show();
} else if (choice == 100 || choice == 226) {
finish();
} else {
puts("Ошибка выбора! Проверьте регистр и попробуйте ещё раз...");
}
}
}
int main() {
run();
}
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <array>
#include <string>
#include <iomanip>
#include <conio.h>
#include <chrono>
#include <ctime>
using namespace std;
using namespace chrono;
void flush() {
cin.ignore(numeric_limits<int>::max(), '\n');
}
int int_parse(const char* message) {
auto value = 0;
cout << message;
cin >> value;
flush();
return value;
}
struct Employee {
int year_of_birth;
int year_of_employment;
int amount_of_children;
int salary;
string surname;
};
array<Employee, 30> list{};
void add() {
Employee employee;
cout << "Фамилия: ";
getline(cin, employee.surname);
employee.year_of_birth = int_parse("Год рождения: ");
employee.year_of_employment = int_parse("Год принятия на работу: ");
employee.amount_of_children = int_parse("Количество детей: ");
employee.salary = int_parse("Оклад: ");
for (auto& item : list) {
if (item.surname.empty()) {
item = employee;
break;
}
}
}
double average(int year) {
auto sum = 0.0;
auto count = 0U;
for (const auto& item : list) {
if (item.surname.empty()) break;
sum += year - item.year_of_birth;
++count;
}
auto avg = 0.0;
if (count != 0U) {
avg = sum / count;
}
return avg;
}
void show() {
auto count = 0U;
for (const auto& item : list) {
if (item.surname.empty()) break;
cout << setw(3U) << ++count << ". "
<< item.surname << "\n\t"
<< "Дата рождения: " << item.year_of_birth << "\n\t"
<< "Дата приёма на работу: " << item.year_of_employment << "\n\t"
<< "Количество детей: " << item.amount_of_children << "\n\t"
<< "Оклад: " << item.salary << "\n\n";
}
}
void finish() {
exit(0);
}
void menu() {
cout
<< "a. добавить информацию в хранилище\n"
<< "b. определить средний возраст\n"
<< "c. напечатать всю информацию, содержащуюся в массиве\n"
<< "d. закончить работу программы\n";
}
void run() {
system("chcp 1251 > nul");
while (true) {
menu();
auto choice = _getch();
if (choice == 97 || choice == 244) {
add();
} else if (choice == 98 || choice == 232) {
const auto last_time = system_clock::to_time_t(system_clock::now());
const auto time_line = string(ctime(&last_time));
const auto current_year = stoi(string(time_line.cend() - 5, time_line.cend()));
const auto avg = average(current_year);
cout << "Средний возраст: " << fixed << setprecision(1) << avg << '\n';
} else if (choice == 99 || choice == 241) {
show();
} else if (choice == 100 || choice == 226) {
finish();
} else {
puts("Ошибка выбора! Проверьте регистр и попробуйте ещё раз...");
}
}
}
int main() {
run();
}
Похожие вопросы
- ПРОШУ, ПОМОГИТЕ НАПИСАТЬ КОД C++
- Помогите пожалуйста написать код на c++, выводящий имя, фамилию и дату рождения нескольких человек
- Помогите пожалуйста написать код на C++
- Помогите с кодом задачи c++. задача на фото
- Помогите написать программу на C++
- Помогите пж написать код на C++
- Помогите написать код с файлами C++
- Помогите написать код с файлами C++
- Программирование на C++ .Помогите написать код.
- Помогите написать код c++