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

График учёта рабочего времени (структура)

23.05.2012, 16:45. Показов 4424. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите решить,срочно надо...
вот задача и пример в этом документе:Фамилия.doc
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2012, 16:45
Ответы с готовыми решениями:

Структуры: график учёта рабочего времени
Структуры не понимаю(Можете помочь вот с такой задаче срочно надо.... структура график учёта...

Информационная система учета рабочего времени
Информационная система учета рабочего времени. Система учета рабочего времени позволяет...

Структура БД для табеля учета рабочего времени
Начал создавать структуру БД для табеля учета рабочего времени (FireBird) и столкнулся с проблемами...

Табель учёта рабочего времени
Добрый день. Коллеги. Предо мной стоит задача сделать на сайте табель учёта рабочего времени. По...

5
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
25.05.2012, 00:11 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <cstdio>
#include <cstdlib>
#include <cstddef>
 
//--------------------------
typedef struct
{
    int h;
    int m;
 
} tm_t;
 
typedef struct
{
    char surname[12];
    tm_t time_start;
    tm_t time_end;
 
} employee_t;
 
//--------------------------
 
char* stime(const tm_t& t, char* buf)
{
    if(sprintf(buf, "%02d:%02d", t.h, t.m) != 5) return NULL;
    return buf;
}
 
tm_t count(const tm_t& t1, const tm_t& t2)
{
    int a = (t1.h * 60 + t1.m);
    int b = (t2.h * 60 + t2.m);
 
    int c = 24 * 60;
    if(a > b) c = (24 * 60) - a + b;
    else if(a < b) c = b - a;
 
    tm_t res = {c / 60, c % 60};
    return res;
}
 
bool is_correct_time_format(const tm_t& t)
{
    return (t.h >= 0 && t.h <= 23) && (t.m >= 0 && t.m <= 59);
}
 
//--------------------------
 
int clearbuf(FILE* in)
{
    int c = getc(in);
    while(c != EOF && c != '\n')
        c = getc(in);
    return c;
}
 
//--------------------------
 
int main()
{
    const size_t n = 4;
    employee_t e[n];
    //-------------------------
 
    for(size_t i = 0; i < n; ++i)
    {
        printf("surname -> ");
        int input_result = scanf("%11s", e[i].surname);
        if(input_result != 1) return 1;
        clearbuf(stdin);
 
        printf("start(hh:mm) -> ");
        input_result = scanf("%2d:%2d", &e[i].time_start.h, &e[i].time_start.m);
        if(input_result != 2 || !is_correct_time_format(e[i].time_start))  return 1;
        clearbuf(stdin);
 
        printf("end(hh:mm) -> ");
        input_result = scanf("%2d:%2d", &e[i].time_end.h, &e[i].time_end.m);
        if(input_result != 2 || !is_correct_time_format(e[i].time_end))  return 1;
        clearbuf(stdin);
    }
 
    //-------------------------
 
    printf("|%-12s|%-12s|%-12s|%-12s|\n",
           "SURNAME", "START", "END", "COUNT");
 
    for(size_t i = 0; i < n; ++i)
    {
        static const size_t buf_len = 6;
        char buf1[buf_len], buf2[buf_len], buf3[buf_len];
 
        tm_t c = count(e[i].time_start, e[i].time_end);
        printf("|%-12s|%-12s|%-12s|%-12s|\n",
               e[i].surname, stime(e[i].time_start, buf1), stime(e[i].time_end, buf2), stime(c, buf3));
    }
}
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
25.05.2012, 14:52  [ТС] 3
можете помочь с коментами а то не особо понял код

Добавлено через 30 минут
и ещё никак по проще сделать нельзя(а то мне не поверят что такой код сделал)
например там ввёл время такое и такое и потом просто вывело не табличкой такой а просто время работы
вот:
время прихода 8:00
время ухода 20:00
Время на работе: 24 ч
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
25.05.2012, 16:00 4
Цитата Сообщение от димарик Посмотреть сообщение
просто вывело не табличкой такой а просто время работы
А сразу нельзя было об этом сказать?
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <cstdio>
 
//--------------------------
typedef struct
{
    int h;
    int m;
 
} tm_t;
 
typedef struct
{
    char surname[12];
    tm_t time_start;
    tm_t time_end;
 
} employee_t;
 
//--------------------------
 
tm_t count(const tm_t& t1, const tm_t& t2)
{
    int a = (t1.h * 60 + t1.m);
    int b = (t2.h * 60 + t2.m);
 
    int c = 24 * 60;
    if(a > b) c = (24 * 60) - a + b;
    else if(a < b) c = b - a;
 
    tm_t res = {c / 60, c % 60};
    return res;
}
 
bool is_correct_time_format(const tm_t& t)
{
    return (t.h >= 0 && t.h <= 23) && (t.m >= 0 && t.m <= 59);
}
 
//--------------------------
 
int clearbuf(FILE* in)
{
    int c = getc(in);
    while(c != EOF && c != '\n')
        c = getc(in);
    return c;
}
 
//--------------------------
 
int main()
{    
    employee_t e;
    //-------------------------
 
    printf("surname -> ");
    int input_result = scanf("%11s", e.surname);
    if(input_result != 1) return 1;
 
    printf("start(hh:mm) -> ");
    clearbuf(stdin);
    input_result = scanf("%2d:%2d", &e.time_start.h, &e.time_start.m);
    if(input_result != 2 || !is_correct_time_format(e.time_start))  return 1;
 
    printf("end(hh:mm) -> ");
    clearbuf(stdin);
    input_result = scanf("%2d:%2d", &e.time_end.h, &e.time_end.m);
    if(input_result != 2 || !is_correct_time_format(e.time_end))  return 1;
 
    //-------------------------
 
    tm_t c = count(e.time_start, e.time_end);
    printf("count -> %02d:%02d\n", c.h, c.m);
}
Цитата Сообщение от димарик Посмотреть сообщение
можете помочь с коментами а то не особо понял код
Задавай конкретные вопросы, я не знаю, что тебе понятно, а что нет.

Добавлено через 50 секунд
Цитата Сообщение от димарик Посмотреть сообщение
время прихода 8:00
время ухода 20:00
Время на работе: 24 ч
12 ч...
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 81
25.05.2012, 17:55  [ТС] 5
вот это не понимаю
C++
1
2
3
4
5
tm_t count(const tm_t& t1, const tm_t& t2)
bool is_correct_time_format(const tm_t& t)
{
    return (t.h >= 0 && t.h <= 23) && (t.m >= 0 && t.m <= 59);
}
и вот эту запись
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int clearbuf(FILE* in)
{
    int c = getc(in)
 
employee_t e;
    //-------------------------
 
    printf("surname -> ");
    int input_result = scanf("%11s", e.surname);
    if(input_result != 1) return 1;
 
    printf("start(hh:mm) -> ");
    clearbuf(stdin);
    input_result = scanf("%2d:%2d", &e.time_start.h, &e.time_start.m);
    if(input_result != 2 || !is_correct_time_format(e.time_start))  return 1;
 
    printf("end(hh:mm) -> ");
    clearbuf(stdin);
    input_result = scanf("%2d:%2d", &e.time_end.h, &e.time_end.m);
    if(input_result != 2 || !is_correct_time_format(e.time_end))  return 1;
Добавлено через 52 секунды
а вы не знаете ещё как вот эти строчки заменить сделать более упрощёнными
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
printf("surname -> ");
int input_result = scanf("%11s", e.surname);
if(input_result != 1) return 1;
 
printf("start(hh:mm) -> ");
clearbuf(stdin);
input_result = scanf("%2d:%2d", &e.time_start.h, &e.time_start.m);
if(input_result != 2 || !is_correct_time_format(e.time_start)) return 1;
 
printf("end(hh:mm) -> ");
clearbuf(stdin);
input_result = scanf("%2d:%2d", &e.time_end.h, &e.time_end.m);
if(input_result != 2 || !is_correct_time_format(e.time_end)) return 1;
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
26.05.2012, 00:16 6
Вот, вариант попроще... без проверок на ошибки(при ошибочном вводе программа будет работать неправильно).
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
54
55
#include <iostream>
 
// ---структура "время"---
struct Time
{
    int h;   // часы
    int m;   // минуты
};
 
// ---структура "работник"---
struct Employee
{
    char surname[12];   // фамилия
    Time time_start;    // время начала рабочего дня
    Time time_end;      // время конца рабочего дня
};
 
int main()
{
    using namespace std;
 
    // ---создаём переменную типа Employee---
    Employee e;
 
    // ---вводим фамилию---
    cout << "SURNAME: ";
    cin >> e.surname;
 
    // ---указываем время начала рабочего дня---
    cout << "START\n";
    cout << "  hour: ";
    cin >> e.time_start.h;
    cout << "  min: ";
    cin >> e.time_start.m;
 
    // ---указываем время конца рабочего дня---
    cout << "END\n";
    cout << "  hour: ";
    cin >> e.time_end.h;
    cout << "  min: ";
    cin >> e.time_end.m;
 
    // ---вычисляем длину рабочего дня---
    int a = (e.time_start.h * 60 + e.time_start.m);
    int b = (e.time_end.h * 60 + e.time_end.m);
    int c = 24 * 60;
 
    if(a > b) c = (24 * 60) - a + b;
    else if(a < b) c = b - a;
 
    Time result = {c / 60, c % 60};
 
    // ---выводим результат---
    cout << "RESULT: " << result.h << "h " << result.m << "m\n";
}
0
26.05.2012, 00:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2012, 00:16
Помогаю со студенческими работами здесь

Система учета рабочего времени
Дали примерно такое задание. Есть сорок сотрудников создать их годовой табель,который по итогу...

Табель учета рабочего времени
Люди у кого есть исходники табеля учета рабочего времени в Делфи плиззззззззз выложите Очень срочно...

Табель учёта рабочего времени
как сделать табель рабочего времени мне нужен простейший чтобы можно было вводить часы за каждый...

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


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

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