Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.12.2014
Сообщений: 1
1

Файлы. Поиск доктора с максимальным количеством пациентов

14.12.2014, 18:19. Показов 530. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задание - вывести информацию о докторе, у которого максимальное число пациентов.

В файле хранятся ФИО пациента, ФИО Доктора, дата посещения.
При нахождении Доктора с максим. числом пациентов, нужно вывести их кол-во и самих пациентов.

вот что есть :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
struct patient
 {
    string hospice;
    string doctor;
    string date;
 
 };
// Массив элементов списка
    vector<patient> patients;
 
// 6. Поиск доктора с максимальным кол-вом пациентов
     void MaxDoctor()
    {
            struct doc
        {
            string name;
            int count;
        };
        vector<doc> docs;
        
        
        int jmax=0; 
 
            for (int i = 0; i < patients.size(); i++)
            {   
    
                for (int j = 0; j<docs.size(); j++)
                                                       {
                             if (patients[i].doctor == docs[j].name)
                             docs[j].count++;  
                             
                             else 
                             {
                                 doc d;
                                 d.name = patients[i].doctor;
                                 d.count = 1;
                                 docs.push_back(d);
                                 
                             }
                         }
            }
            for (int j=1; j<docs.size(); j++)
                        if(docs[j].count>docs[jmax].count) jmax=j;
            
            string doctorName=docs[jmax].name;
            cout<<"ФИО Доктора: "<<doctorName<<"  "<<"Кол-во пациентов: "<<docs[jmax].count<<endl;
            cout<<"Пациенты"<<endl;
 
            for(int i=0; i<patients.size(); i++)
                if(patients[i].doctor==doctorName)
                    cout << setw(20)<< patients[i].hospice<<endl;
                    
     }
При вызове этой функции появляется ошибка: "vector subscript out of range";

Поискав про эту ошибку я пришёл к выводу, что for (int j = 0; j<docs.size(); j++) не выполняется т.к. первоначально j=0 и docs.size() = 0 (массив docs еще не заполнен ни одной записью).

Как это исправить я не знаю(
так же я думаю есть и другие ошибки в функции

Помогите справиться с проблемой, пожалуйста!

Добавлено через 4 часа 40 минут
Проблема решена.
Вот работающая функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
   void MaxDoctor()
    {
            struct doc
            {
                    string name;
                    int count;
            };
            vector<doc> docs;
     
            int jmax=0;
     
            for (int i = 0; i<patients.size(); i++)
            {
                    bool exists = false;
                    for (int j = 0; j<docs.size(); j++)
                    {
                            if (docs[j].name == patients[i].doctor)
                            {
                                    docs[j].count++;
                                    exists = true;
                                    break;
                            }
                    }
                    if(exists)
                            continue;
                    doc d;
                    d.name = patients[i].doctor;
                    d.count = 1;
                    docs.push_back(d);
            }
            for (int j=1; j<docs.size(); j++)
                    if(docs[j].count>docs[jmax].count) jmax=j;
     
            string doctorName=docs[jmax].name;
            cout<<"ФИО Доктора: "<<doctorName<<"  "<<"Кол-во пациентов: "<<docs[jmax].count<<endl;
            cout<<"Пациенты"<<endl;
     
            for(int i=0; i<patients.size(); i++)
                    if(patients[i].doctor==doctorName)
                            cout << setw(20)<< patients[i].hospice<<endl;
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2014, 18:19
Ответы с готовыми решениями:

Поиск слов с максимальным количеством гласных
using System; using System.IO; using System.Collections.Generic; class Program { static...

Поиск слов с максимальным количеством гласных
using System; using System.IO; class Program { static void Main(string args) { ...

Поиск числа с максимальным количеством нулей (конечный автомат)
Здравствуйте ребята. Вообщем суть такова: Создать программу, которая позволяет пользователю выбрать...

Поиск числа с максимальным количеством делителей среди чисел от a до b
Всем добрый день Прошу помочь переписать или исправить код так, чтобы он работал для больших...

0
14.12.2014, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2014, 18:19
Помогаю со студенческими работами здесь

База данных пациентов электронной картотеки пациентов поликлиники
Дамы и господа, нужна Ваша помощь! Составил вот такую схему (скрин). Для начала попробую описать...

Запись с максимальным количеством слов
Нужно функция вывода записи с максимальным количеством слов. То есть, в программе описана погода,...

Найти каталог с максимальным количеством файлов
Найти каталог с максимальным количеством файлов. Осуществляет проход по всем каталогам системы....

Номер столбца с максимальным количеством нулей
Матрица (7,8) уже задана, в ней нужно найти номер столбца с максимальным количеством нулей при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru