Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
tema054
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 12
#1

Сформировать список, в котором хранится информация о заболеваниях сотрудников - C++

28.01.2009, 22:57. Просмотров 1662. Ответов 11
Метки нет (Все метки)

Сформировать список, в котором хранится информация о заболеваниях сотрудников: ФИО, год рождения, заболевание, продолжительность болезни. Определить сотрудников, которые перенесли одно и тоже заболевание; заболевания с максимальной продолжительностью болезни; количество больничных каждого сотрудника; количество дней, пропущенных по болезни каждым сотрудником

Если можно напишите пожалуйста фрагмент программы которая создает такой список(с комментами если можно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2009, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформировать список, в котором хранится информация о заболеваниях сотрудников (C++):

Сформировать документ, в котором хранится информация о факультетах и их академические задолженности - C++
Сформировать документ, в котором хранится информация о факультетах и их академические задолженности. Напечатать информацию о факультетах с...

В двумерном массиве хранится информация о зарплате 18 сотрудников - C++
В двумерном массиве хранится информация о зарплате 18 сотрудников за каждый день (в первом столбце за пятое января, за втором). Определить...

Сформировать список, в котором содержится информация о сотрудниках подразделения: Ф.И.О., место рождения, год - C++
Сформировать список, в котором содержится информация о сотрудниках подразделения: Ф.И.О., место рождения, год рождения. Напечатать список...

В двумерном массиве хранится информация о зарплате каждого из 20 сотрудников фирмы за каждый месяц года - C++
В двумерном массиве хранится информация о зарплате каждого из 20 сотрудников фирмы за каждый месяц года (в первом столбце — за ян-варь, во...

Организовать двухсторонний список, в котором хранится текст - C++
помогите понять почему программа не работает, и как сделать чтобы она заработала #include <stdio.h> #include <iostream> #include...

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. - C++
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

11
maximus09
32 / 32 / 3
Регистрация: 29.12.2008
Сообщений: 75
29.01.2009, 19:45 #2
Для таких целей можно использовать структуру.

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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
#include <alloc.h>
#include <string.h>
 
 
//---------------------------------------------------------------------------
struct Sotrudnik{
    char* FIO;      //ФИО
    short God;          //Год рождения
    char* Diagnos;  //заболевание
//Начало болезни
    short b_day;          //день
    short b_monat;        //месяц
    short b_year;         //год
 
//Окончание болезни
    short e_day;          //день
    short e_monat;        //месяц
    short e_year;         //год
};
 
#pragma argsused
int main(int argc, char* argv[])
{
    Sotrudnik rabotnik[100];
//Заполнение списка
    rabotnik[0].FIO = (char*)malloc(strlen("Иванов Иван Иванович"));
    rabotnik[0].FIO = "Иванов Иван Иванович";
 
    rabotnik[0].God = 1980;
 
    rabotnik[0].Diagnos = (char*)malloc(strlen("Аппендицит"));
    rabotnik[0].Diagnos = "Аппендицит";
    rabotnik[0].b_day = 23;
    rabotnik[0].b_monat = 4;
    rabotnik[0].b_year = 2000;
    rabotnik[0].e_day = 12;
    rabotnik[0].e_monat = 5;
    rabotnik[0].e_year = 2000;
 
//Освобождение выделенной памяти при завершении работы программы
    free(rabotnik[0].Diagnos);
    free(rabotnik[0].FIO);
    rabotnik[0].Diagnos = NULL;
    rabotnik[0].FIO = NULL;
 
    return 0;
}
//---------------------------------------------------------------------------

Фрагмент программы выполнен на Borland С++ Builder 6.

В программе показан только процесс создания и заполнения списка, как вы и просили. Список заполнен данными только одного работника. Данные об остальных работниках вносятся аналогично. Число 100 в качестве количества работников взято условно.

После того как данные про всех работников будут введены, можно можно выполнить все изложенные в условии задачи операции.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.01.2009, 00:20 #3
maximus09

Код
rabotnik[0].FIO = (char*)malloc(strlen("Иванов Иван Иванович"));
Код
rabotnik[0].Diagnos = (char*)malloc(strlen("Аппендицит"));
это ошибки, но у Шилдта в книжке по C точно такая же, только в ещё более явном виде

надо так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/* выделяет память под строку и её нуль-символ */
main()
{
    char *p;
    int len;
    
    len = strlen("Иван");
    printf("%d\n", len);
    
    if ((p = malloc(strlen("Иван")+1)) == NULL)
        return 1;
    free((void *) p);
    return 0;
}
Код
    rabotnik[0].Diagnos = "Аппендицит";
строка записывается в read-only область т.к. это строковой литерал (строковая константа), чтобы занести строку в выделенный блок нужно сделать

Код
    strcpy(rabotnik[0].Diagnos, "Аппендицит");
когда у тебя строковая константа, ты не можешь её менять

т.е. можно сделать
Код
    Sotrudnik rabotnik[100] = { 
        {
            "Иванов Иван Иванович",
            1980,  
            "Аппендицит",  
            23,  
            4,  
            2000,
            12,  
            5,  
            2000
        },

        {
            "Петров Иван Иванович",
            1970,  
            "Аппендицит",  
            23,  
            4,  
            2000,
            12,  
            5,  
            2000
        }
    };
строки будут просто зафиксированы

а в первом случае, память выделяется, потом вместо указателя на неё записывается указатель на строковой литерал, который free пытается потом освободить
0
tema054
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 12
30.01.2009, 02:15  [ТС] #4
Спасиб ребят тока жаль что она на Turboc30 неработает(((
0
maximus09
32 / 32 / 3
Регистрация: 29.12.2008
Сообщений: 75
30.01.2009, 06:01 #5
Что именно не работает. Давай разбираться вместе.
0
tema054
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 12
30.01.2009, 12:24  [ТС] #6
ну для начало turboc30 непонимает что это за библиотеки
#include <alloc.h>
#include <string.h>
0
Фенрир
42 / 38 / 2
Регистрация: 05.01.2009
Сообщений: 394
30.01.2009, 12:27 #7
укажи пути вручную к папке Include
0
YurA_280784
Заблокирован
30.01.2009, 12:30 #8
Вообще думаю вместо alloc malloc.h нуна
А так прикрепляю и аллок
0
Вложения
Тип файла: rar Alloc.h.rar (462 байт, 22 просмотров)
tema054
0 / 0 / 0
Регистрация: 28.01.2009
Сообщений: 12
30.01.2009, 12:41  [ТС] #9
теперь непонимает что это такое
#pragma hdrstop
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.01.2009, 12:53 #10
там нужно
stdio.h (для NULL)
stdlib.h (для malloc и free)
string.h (для strlen и strcpy)
0
YurA_280784
Заблокирован
30.01.2009, 12:54 #11
Не понимает так скопируй хэдер в котором #pragma hdrstop прописана в папку в которой файлы проекта находятся и коментни эту строчку, тольк в проге теперь ставь "твой хэдер" вместо <>....
0
YurA_280784
Заблокирован
30.01.2009, 12:57 #12
Вот и string.h
0
Вложения
Тип файла: rar string.h.rar (1.4 Кб, 26 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2009, 12:57
Привет! Вот еще темы с ответами:

Разработать класс "Полином" , в котором информация о коэфициентах хранится в виде списка - C++
Разработать класс &quot;Полином&quot; , в котором информация о коэфициентах хранится в виде списка. Реализовать для класса методы ввода вывода,...

Связный список, в котором информация о книгах сортируется по убыванию стоимости - C++
Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию стоимости. Есть код: #include...

Сформировать новый список, в котором элементы расположены в порядке возрастания - C++
Дан список F=&lt;1,8,9,0,1,3,2,4,1,12,23,1,23,2,19,1&gt;.Сформировать новый список в котором элементы расположены в порядке...

Вывести информацию о сотруднике, список сотрудников пенсионного возраста, средний оклад сотрудников отдела - C++
Дан файл, содержащий информацию о сотрудниках отдела учреждения. Структура записи файла: фамилия и инициалы сотрудника; год...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
30.01.2009, 12:57
Ответ Создать тему
Опции темы

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