Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Программа обработки массива данных класса "Предпри


Автор: molotokan 29.10.2019, 20:50
Дан класс Предприятие с приватными (private) полями: название, адрес, имя директора, количество сотрудников и публичные поля: конструктор без параметров, конструктор с параметрами, деструктор и вспомогательные функции. Создать программу, в кот. Объявляется массив объектов этого класса и меню (каждый пункт меню – отдельная функция):

1) Ввести элементы массива с клавиатуры;

2) Вывести на экран элементы массива (объекты);

3) Сортировать по убыванию по полю Количество сотрудников;

4) Вывести на экран элементы, для кот. известно Название;

5) Добавить на первую позицию новый элемент;

6) Изменить элемент для которого знаем Адрес;

7) Записать элементы массива в файл;

8) Вывести на экран последний элемент из файла.

Автор: kapbepucm 5.11.2019, 14:33
Код
#include <iostream>
#include <cstring>

#define STRING_SIZE 20
#define ARRAY_SIZE 3

class Company
{
private:
  char* name_;
  char* address_;
  char* owner_;
  int   slavesCount_;
public:
  Company(): Company("", "", "", 0)
  {
  }
  Company(const char* name, const char* address, const char* owner, const int slavesCount)
  {
    name_ = new char[STRING_SIZE];
    strncpy(name_, name, STRING_SIZE-1);
    name_[STRING_SIZE-1] = 0;

    address_ = new char[STRING_SIZE];
    strncpy(address_, address, STRING_SIZE-1);
    name_[STRING_SIZE-1] = 0;

    owner_ = new char[STRING_SIZE];
    strncpy(owner_, owner, STRING_SIZE-1);
    owner_[STRING_SIZE-1] = 0;

    slavesCount_ = slavesCount;
  }
  ~Company()
  {
    delete[] name_;
    delete[] address_;
    delete[] owner_;
  }
  void edit()
  {
    char buffer[STRING_SIZE];

    std::cout << "enter company name: ";
    std::cin >> buffer;
    strncpy(name_, buffer, STRING_SIZE-1);

    std::cout << "enter company address: ";
    std::cin >> buffer;
    strncpy(address_, buffer, STRING_SIZE-1);

    std::cout << "enter company director name: ";
    std::cin >> buffer;
    strncpy(owner_, buffer, STRING_SIZE-1);

    std::cout << "enter company employees count: ";
    std::cin >> slavesCount_;
  }
  void edit(const char* address)
  {
    if (strncmp(address_, address, STRING_SIZE) == 0)
      edit();
  }
  void show()
  {
    std::cout << "company name: " << name_ << std::endl;
    std::cout << "company address: " << address_ << std::endl;
    std::cout << "company director name: " << owner_ << std::endl;
    std::cout << "company employees count: " << slavesCount_ << std::endl;
  }
  void show(const char* name)
  {
    if (strncmp(name_, name, STRING_SIZE) == 0)
      show();
  }
};
//===============================================================
void editArray(Company* array, const int count)
{
  int i;
  for(i=0; i < count; ++i)
  {
    std::cout << "----- edit company " << i << " -----" << std::endl;
    array[i].edit();
  }
}
//===============================================================
void showArray(Company* array, const int count)
{
  int i;
  for(i=0; i < count; ++i)
  {
    std::cout << "----- show company " << i << " -----" << std::endl;
    array[i].show();
  }
}
//===============================================================
void showElementByName(Company* array, const int count)
{
  int i;
  char name[STRING_SIZE];
  std::cout << "--------------------------" << std::endl;
  std::cout << "enter known name: ";
  std::cin >> name;
  std::cout << "----- search result for " << name << " -----" << std::endl;
  for(i=0; i < count; ++i)
    array[i].show(name);
}
//===============================================================
void editElementByAddress(Company* array, const int count)
{
  int i;
  char address[STRING_SIZE];
  std::cout << "--------------------------" << std::endl;
  std::cout << "enter known address: ";
  std::cin >> address;
  std::cout << "----- edit elements with address " << address << " -----" << std::endl;
  for(i=0; i < count; ++i)
    array[i].edit(address);
}
//===============================================================
int main(int, char**)
{
//Объявляется массив объектов этого класса
  Company* array = new Company[ARRAY_SIZE];

//1) Ввести элементы массива с клавиатуры;
  editArray(array, ARRAY_SIZE);

//2) Вывести на экран элементы массива (объекты);
  showArray(array, ARRAY_SIZE);

//4) Вывести на экран элементы, для кот. известно Название;
  showElementByName(array, ARRAY_SIZE);

//6) Изменить элемент для которого знаем Адрес;
  editElementByAddress(array, ARRAY_SIZE);

  delete[] array;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)