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

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

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

Студворк — интернет-сервис помощи студентам
Помогите решить,срочно надо...
вот задача и пример в этом документе:Фамилия.doc
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2012, 16:45
Ответы с готовыми решениями:

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

Информационная система учета рабочего времени
Информационная система учета рабочего времени. Система учета рабочего времени позволяет руководителям выдавать задания и отслеживать ход...

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

5
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
25.05.2012, 00:11
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  [ТС]
можете помочь с коментами а то не особо понял код

Добавлено через 30 минут
и ещё никак по проще сделать нельзя(а то мне не поверят что такой код сделал)
например там ввёл время такое и такое и потом просто вывело не табличкой такой а просто время работы
вот:
время прихода 8:00
время ухода 20:00
Время на работе: 24 ч
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
25.05.2012, 16:00
Цитата Сообщение от димарик Посмотреть сообщение
просто вывело не табличкой такой а просто время работы
А сразу нельзя было об этом сказать?
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  [ТС]
вот это не понимаю
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
Вот, вариант попроще... без проверок на ошибки(при ошибочном вводе программа будет работать неправильно).
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2012, 00:16
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru