Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает проверка на диапазон При вводе баллов из нужного диапазона(0-100)- код не выполняется, а снова запрашивает ввод. Выполняется при вводе чисел больших 100. int Ball=0; int Grade=0; while(Ball >= 0 && Ball <= 100)... https://www.cyberforum.ru/ cpp-beginners/ thread2490210.html Нужно больше Меерса C++
Читаю книгу https://www.ozon.ru/context/detail/id/19383908/, там в начале книги некоторые личности делают отзывы о этой книге и Стив Беркетт пишет что помимо этой книги есть еще первая книга Скотта,...
C++ Как читать и писать в файл "одновременно" https://www.cyberforum.ru/ cpp-beginners/ thread2490177.html
Смысл такой. В С++ есть два варианта открытия файла ifstream и ofstream один для чтения а другой для записи. А что делать если скажем происходит попеременное чтение и запись в один и тот же файл? ...
C++ Задача на динамическое программирование https://www.cyberforum.ru/ cpp-beginners/ thread2490163.html
Узник пытается бежать из замка, который состоит из N×M квадратных комнат, расположенных в виде прямоугольника NxM. Между любыми двумя соседними комнатами есть дверь, однако некоторые комнаты закрыты...
C++ Frontend и Backend разработчик
Добрый день! Что делает Frontend и Backend разработчик насколько я понял у них разные обязанности?
C++ Вызов невиртуального метода в классе-наследнике https://www.cyberforum.ru/ cpp-beginners/ thread2490141.html
Добрый день! Имеется следующий код: #include <iostream> using namespace std; namespace some {
C++ Итератор for работает не правильно. Не могу понять отчего https://www.cyberforum.ru/ cpp-beginners/ thread2490121.html
Дано задание: Люди стоят в очереди, но никогда не уходят из её начала, зато могут приходить в конец и уходить оттуда. Более того, иногда некоторые люди могут прекращать и начинать беспокоиться из-за...
C++ Ошибка, виртуальные функции, ООП
Вот код, ошибка на 79 строке когда нужно вывести имя, пишет что указатель не туда указывает // vitrpers.cpp // виртуальные функции и класс person #include <iostream> using namespace std;...
C++ Как лучше всего писать Unit тесты для кода? Как лучше всего писать тесты для кода? В том плане что к примеру есть специальные библиотеки и т.д., что лучше? https://www.cyberforum.ru/ cpp-beginners/ thread2490100.html C++ Найти произведение двух длинных целых чисел Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в C++ программирование. В олимп есть токая задача https://www.e-olymp.com/ru/problems/272, уже 2 дня не могу найти решение. Можете... https://www.cyberforum.ru/ cpp-beginners/ thread2490096.html
Объединение двух длл в одну через ресурсы третьей длл C++
Мне нужно сунуть 2 длл в ресурсы другой длл и инициализировать эти длл при подгрузке длл которая хранит эти 2 длл у себя в ресурсах, как можно реализовать это в коде, помогите.
C++ Cmake subprojects https://www.cyberforum.ru/ cpp-beginners/ thread2490063.html
Здравствуйте, ситуация такая. Есть проект Proj у него 1 подпроект subProj в котором еще 2 подпроекта (subProj1, subProj2) _____________ ___________________ ...
93 / 78 / 23
Регистрация: 19.10.2013
Сообщений: 480
12.08.2019, 12:22 0

Программа диагностики заболеваний - C++ - Ответ 13766165

12.08.2019, 12:22. Показов 2237. Ответов 31
Метки (Все метки)

Лучший ответ Сообщение было отмечено koteyko_r как решение

Решение

Цитата Сообщение от koteyko_r Посмотреть сообщение
Думаю создать класс болезнь и от неё унаследовать конкретные заболевания. Как тогда можно будет выполнить метод, который будет проходиться по всем потомкам этого класса?
Не нужно проходиться по потомкам, это гиблое дело. Нужно просто составить список заболеваний, а для каждого заболевания составить список симптомов с весом симптома для этого заболевания.

Например:
Вы создаете класс "Заболевание". У этого класса есть внутренне поле "Симптом", которое является списком.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct Symptom
{
    string name; // наименование симптома
    /* еще какие-то сопутствующие данные, например описание симптома */
};
 
struct Disease
{
    string name; // наименование заболевания
    map<Symptom,int> symptoms; // <симптом,вес> - список симптомов заболевания, 
    // где "вес" определяет насколько симптом относится к этому заболеванию по какой-либо шкале, 
    // например от 0 до 10 в баллах. 
    // Или можно привязаться к более "медицинской" шкале - количество проявлений 
    // на группу человек с данным заболеванием, это уже нужно со специалистом обговаривать.
}
 
vector<Disease> diseases; // все заболевания, известные программе (внесенные программистом или пользователем)
 
map<Disease,int> possibleDiseases; // список возможных заболеваний в соответствии с симптомами
map<Symptom,int> possibleSymptoms; // список всех симптомов всех возможных заболеваний
1. Пользователь вводит список симптомов с клавиатуры (или выбирает из предлагаемых).
2. Программа пробегает по списку diseases и сопоставляет симптомы. Если какой-то симптом соответствует списку, отправляем все симптомы заболевания текущей итерации в possibleSymptoms. Если симптом уже был в списке, то увеличиваем его вес. Само заболевание добавляем в список possibleDiseases.
3. Собрав список возможных заболеваний, высчитываем вес заболевания и сортируем possibleDiseases в порядке убывания - в самом "верху" списка окажется самое подходящее заболевание, затем менее релевантные.

В таком случае качество определения заболевания будет зависеть от двух факторов:
1. Качество выставленных "весов" проявления симптома при заболевании.
2. Алгоритма расчета итогового веса по совокупности симптомов: если несколько симптомов для заболевания имеют высокий вес, но какой-то из них отсутствует в анамнезе, то значит вес заболевания нужно уменьшать относительно других.

Например, продолжительный кашель может относиться к разным болезням: аллергическая реакция, бронхит и ангина.
Для первых двух заболеваний кашель будет иметь вес 10, для последнего - 6 (грубо говоря).
Температура при этом будет являться определяющим фактором: если температуры нет, то это определенно аллергическая реакция, а если есть - либо бронхит, либо ангина. Значит, при расчете финального веса, нужно учесть этот симптом любым способом: вычесть его или еще что.
Ну а определить однозначно бронхит это или ангина можно по третьему симптому: тошнота, рвота, которые имеют высокий вес при бронхите.

Итого имеем:
Код
Disease1.name = "Аллергическая реакция";
Disease1.symptoms = { { Кашель,10 }, { Температура,0}, {Тошнота,0} };

Disease2.name = "Ангина";
Disease2.symptoms = { { Кашель,6 }, { Температура,10}, {Тошнота,0} };

Disease3.name = "Бронхит";
Disease3.symptoms = { { Кашель,10 }, { Температура,10}, {Тошнота,5} };
Допустим, у пациента кашель с температурой.
Карта симптомов будет выглядеть как-то так:
Код
possibleSymptoms = {
Кашель: 26, // сложил вес кашля со всех возможных заболеваний
Температура: 20, // тоже самое
Тошнота: 5 // ...
}
А карта заболеваний:
Код
possibleDiseases = {
"Ангина": 46, // (кашель+температура)
"Бронхит": 41, // (кашель+температура-тошнота). Тошнота с минусом, потому что её нет в анамнезе
"Аллергическая реакция": 1 // (кашель-температура-тошнота). Темп. с "-", потому что она не соответствует заболеванию
}
Итого: пациент болен ангиной.

Это один из примеров алгоритма, не гарантирую его качества.
Повторю: всё зависит исключительно от алгоритма определения веса заболевания.

Вернуться к обсуждению:
Программа диагностики заболеваний C++
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2019, 12:22
Готовые ответы и решения:

Программа для диагностики системы
Доброго времени суток, Господа! Пожалуйста, помогите создать программу диагностирующая систему ПК...

Программа диагностики рентабельности предприятия
тема: Программа диагностики рентабельности предприятия. Исходные данные и основные требования:...

Программа диагностики ошибок
Тема курсовой работы: Программа диагностики ошибок. Программа обнаруживает в тексте программы на...

Не запускается средство диагностики. Окно средств диагностики не поддерживает текущую конфигурацию отладки
При запуске отладки приложения должно появиться данное окошко: На данный момент при запуске...

31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2019, 12:22

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Программа диагностики СМА
Господа программисты! Неужели итальянские программисты лучше наших?! Имеется программа:...

Программа для диагностики ПК
Здравствуйте, есть программа для диагностики ПК При запуске на любых ОС появляется вот такая...

Программа диагностики станков
Добрый день. Вообще то я не программист, а электроник. Обслуживаю санки с ЧПУ. Возникла идея...

Программа диагностики автомобиля (OBD2)
Хочу сам написать программу диагностики автомобиля, а именно чтения и сброс ошибок, а руководство к...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.