Как в моём коде можно реализовать сортировку и поиск по “степени риска”? Пишу небольшую программку с ооп и наследованием. Есть базовый класс и от него наследуются пять классов - видов страхование. Через меню необходимо вывести 3 пункта. 1 - Посмотреть виды страховок, 2 - Отсортировать по уменьшению степени риска, 3 - Найти по степени риска. Не получается сделать сортировку по степени риска и поиск. Подскажите, пожалуйста, как можно реализовать данные пункты?Файл Derivativ.h#pragma once
#include
#include
#include
class Derivativ
{
public:
Derivativ();
Derivativ(const char* n, int t, const char* o, const char* v, int s);
Derivativ(const Derivativ& t);
const char* getname() const;
int getterm()const;
const char* getoblig() const;
const char* getvariety() const;
int getstep()const;
virtual void Show();
virtual double Summa();
virtual ~Derivativ();
protected:
char* name;
int term;
char* oblig;
char* variety;
int step;
};
class Live : public Derivativ
{
public:
Live();
Live(const char* n, int t, const char* o, const char* v, int s);
Live(const Derivativ& t);
void Show() override;
double Summa() override;
virtual ~Live();
};
class Medicine : public Derivativ
{
public:
Medicine();
Medicine(const char* n, int t, const char* o, const char* v, int s);
Medicine(const Derivativ& t);
void Show() override;
double Summa() override;
virtual ~Medicine();
};
class Ncase : public Derivativ
{
public:
Ncase();
Ncase(const char* n, int t, const char* o, const char* v, int s);
Ncase(const Derivativ& t);
void Show() override;
double Summa() override;
virtual ~Ncase();
};
class Property : public Derivativ
{
public:
Property();
Property(const char* n, int t, const char* o, const char* v, int s);
Property(const Derivativ& t);
void Show() override;
double Summa() override;
virtual ~Property();
};
class CivilLiab : public Derivativ
{
public:
CivilLiab();
CivilLiab(const char* n, int t, const char* o, const char* v, int s);
CivilLiab(const Derivativ& t);
void Show() override;
double Summa() override;
virtual ~CivilLiab();
};Файл Derivativ.cpp#define _CRT_SECURE_NO_WARNINGS
#include "Derivativ.h"
#include
#include
#include
using namespace std;
Derivativ::Derivativ()
{
name = 0;
term = 0;
oblig = 0;
variety = 0;
step = 0;
}
Derivativ::Derivativ(const char* n, int t, const char* o, const char* v, int s)
: name(new char[strlen(n) + 1]), term(t), oblig(new char[strlen(o) + 1]), variety(new char[strlen(v) + 1]), step(s)
{
strcpy(name, n);
strcpy(oblig, o);
strcpy(variety, v);
}
Derivativ::Derivativ(const Derivativ& t)
: name(new char[strlen(t.name) + 1]), term(t.term), oblig(new char[strlen(t.oblig) + 1]), variety(new char[strlen(t.variety) + 1]), step(t.step)
{
strcpy(name, t.name);
strcpy(oblig, t.oblig);
strcpy(variety, t.variety);
}
void Derivativ::Show()
{ }
double Derivativ::Summa()
{
return 0;
}
Derivativ::~Derivativ()
{
delete[] name;
delete[] oblig;
delete[] variety;
}
const char* Derivativ::getname() const
{
return name;
}
int Derivativ::getterm() const
{
return term;
}
const char* Derivativ::getoblig() const
{
return oblig;
}
const char* Derivativ::getvariety() const
{
return variety;
}
int Derivativ::getstep() const
{
return step;
}
Live::Live() :Derivativ()
{ }
Live::Live(const char* n, int t, const char* o, const char* v, int s) : Derivativ(n, t, o, v, s)
{ }
Live::Live(const Derivativ& t) : Derivativ(t)
{ }
void Live::Show()
{
cout
#include
#include "Derivativ.h"
#include
using namespace std;

void Menu() {
cout > c;
switch (c) {
case 1:
system("cls");

Derivativ *ex[5];
ex[0] = new Live("Страхование жизни", 3, "Добровальное", "Личное", 5);
ex[1] = new Medicine("Медицинское страхование", 5, "Добровальное", "Личное", 3);
ex[2] = new Ncase("Страхование от несчастных случаев", 5, "Добровальное", "Личное", 4);
ex[3] = new Property("Страхование имущества", 1, "Добровальное", "Имущественное", 2);
ex[4] = new CivilLiab("Страхование гражданской ответственности", 1, "Добровальное", "Имущественное", 1);

for (int i = 0; i Show();
cout getname() getterm() getoblig() getvariety() getstep() Summa() << endl;
cout << endl << endl;

}

for (int i = 0; i < 5; ++i)
delete ex[i];

break;
case 2:
system("cls");

break;
case 3:
system("cls");

break;
case 0:
break;
default: cout << "Некорректный вариант выбора!" << endl;
}
} while (c != 0);


_getch();
return 0;
}

21 Авг 2019 в 06:58
180 +1
0
Ответы
1

Для реализации сортировки по степени риска и поиска по степени риска вам нужно использовать стандартные функции сортировки и поиска в массиве объектов классов.

Для сортировки классов по уменьшению степени риска, можно воспользоваться стандартной функцией сортировки std::sort из библиотеки <algorithm>. Для этого объявите собственный компаратор, который будет сравнивать объекты по степени риска, и передайте его в функцию сортировки. Пример:

bool compareRisks(Derivativ* a, Derivativ* b) {
return a->getstep() < b->getstep();
}
// Внутри блока case 2 в функции main()
std::sort(ex, ex+5, compareRisks);

Для поиска по степени риска можно использовать стандартную функцию поиска std::find_if из библиотеки <algorithm>. Объявите собственный предикат, который будет проверять степень риска объекта, и передайте его в функцию поиска. Пример:

int searchRisk;
cout << "Введите степень риска для поиска: ";
cin >> searchRisk;
// Внутри блока case 3 в функции main()
auto it = std::find_if(ex, ex+5, [searchRisk](Derivativ* obj) {
return obj->getstep() == searchRisk;
});
if (it != ex+5) {
cout << "Найден объект с указанной степенью риска:" << endl;
cout << "Название: " << (*it)->getname() << endl;
// Вывод остальных параметров объекта
} else {
cout << "Объект с указанной степенью риска не найден." << endl;
}

Поместите данные коды в блоки case 2 и case 3 в функции main() соответственно.

Надеюсь, это поможет вам реализовать необходимые операции сортировки и поиска по степени риска в вашей программе.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир