М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

C++ Создать класс, содержащий сведения о месячной
заработной плате рабочих завода. Класс содержит
следующие данные: фамилия рабочего, наименование цеха,
размер заработной платы за месяц. Вычислить общую
сумму выплат за месяц по цеху X, а также среднемесячный
заработок рабочего этого цеха. Напечатать для бухгалтерии
ведомость для начисления заработной платы рабочим этого
цеха. Данные и результаты должны храниться в файлах.
Предусмотреть возможность добавления информации,
удаления отдельных записей, сортировки по заданному
полю.

👇
Ответ:
valentinalobanova
valentinalobanova
30.06.2022
Хорошо, я с удовольствием помогу вам решить задачу.

Сначала создадим класс "Worker", который будет содержать информацию о рабочих. В этом классе будут поля для фамилии рабочего, наименования цеха и размера заработной платы за месяц.

```cpp
class Worker {
private:
std::string surname;
std::string workshop;
float salary;

public:
Worker(std::string surname, std::string workshop, float salary) {
this->surname = surname;
this->workshop = workshop;
this->salary = salary;
}

std::string getWorkshop() const {
return workshop;
}

float getSalary() const {
return salary;
}
};
```

Затем создадим класс "Factory", который будет содержать список всех рабочих завода и будет предоставлять методы для выполнения требуемых операций.

```cpp
class Factory {
private:
std::vector workers;

public:
void addWorker(const Worker& worker) {
workers.push_back(worker);
}

void removeWorker(int index) {
workers.erase(workers.begin() + index);
}

float calculateTotalPayment(const std::string& workshop) const {
float totalPayment = 0.0;
int count = 0;
for (const Worker& worker : workers) {
if (worker.getWorkshop() == workshop) {
totalPayment += worker.getSalary();
count++;
}
}
return totalPayment;
}

float calculateAveragePayment(const std::string& workshop) const {
float totalPayment = 0.0;
int count = 0;
for (const Worker& worker : workers) {
if (worker.getWorkshop() == workshop) {
totalPayment += worker.getSalary();
count++;
}
}
return totalPayment / count;
}

void printPayroll(const std::string& workshop) const {
std::ofstream outputFile("payroll.txt");
for (const Worker& worker : workers) {
if (worker.getWorkshop() == workshop) {
outputFile << "Worker: " << worker.getSurname() << ", Workshop: " << worker.getWorkshop() << ", Salary: " << worker.getSalary() << std::endl;
}
}
outputFile.close();
}

void sortWorkersByField(bool ascendingOrder) {
if (ascendingOrder) {
std::sort(workers.begin(), workers.end(), [](const Worker& a, const Worker& b) {
return a.getSalary() < b.getSalary();
});
}
else {
std::sort(workers.begin(), workers.end(), [](const Worker& a, const Worker& b) {
return a.getSalary() > b.getSalary();
});
}
}

};
```

Теперь можно создать объект класса "Factory" и выполнять операции, описанные в задаче.

Например, чтобы добавить рабочего в цех, можно использовать следующий код:

```cpp
Factory factory;
Worker worker1("Smith", "X", 1000);
Worker worker2("Johnson", "Y", 1200);
factory.addWorker(worker1);
factory.addWorker(worker2);
```

Чтобы вычислить общую сумму выплат за месяц по цеху X, можно использовать следующий код:

```cpp
float totalPaymentX = factory.calculateTotalPayment("X");
std::cout << "Total payment for workshop X: " << totalPaymentX << std::endl;
```

А чтобы вычислить среднемесячный заработок рабочих цеха X, используйте следующий код:

```cpp
float averagePaymentX = factory.calculateAveragePayment("X");
std::cout << "Average payment for workshop X: " << averagePaymentX << std::endl;
```

Для создания ведомости для начисления заработной платы рабочим цеха X в файле "payroll.txt", используйте следующий код:

```cpp
factory.printPayroll("X");
```

Для сортировки рабочих по заданному полю (например, по зарплате), используйте следующий код:

```cpp
factory.sortWorkersByField(true);
```

В этом примере рабочие будут отсортированы по возрастанию зарплаты. Если в методе sortWorkersByField указать значение false, рабочие будут отсортированы по убыванию зарплаты.

Это базовый код, который выполняет поставленные задачи. Если вам нужно добавить функциональность, например, возможность добавлять и удалять рабочих через пользовательский интерфейс, это уже будет более сложная задача.
4,6(73 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Другие предметы
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ