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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу вычисления с применением операторов цикла http://www.cyberforum.ru/cpp-beginners/thread584321.html
p=\prod_{n=1}^{10}\frac{n+1}{{n}^{2}+1}
C++ Создать классы: колесо, велосипед и автомобиль (иерархия или композиция) Помогите решить задачу очень нужно: Создать классы: колесо, велосипед и автомобиль. Составить из них иерархию или композицию. http://www.cyberforum.ru/cpp-beginners/thread584310.html
C++ Побитовые операции: переставить биты так чтобы сначала шли все единицы, а затем все нули
В двухбайтовой ячейке памяти записана последовательность нулей и единиц. С помощью битовых операций переставьте биты так чтобы сначала шли все единицы, а затем все нули.
Составить описание класса многочленов C++
Доброго времени суток! Мне нужна помощь... Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть методы для вычисления значения многочлена для заданного аргумента, операции сложения, вычитания и умножения многочленов с получением нового объекта многочлена, печать описания многочлена. Выполнить на TurboC
C++ Память http://www.cyberforum.ru/cpp-beginners/thread584236.html
Здравствуйте, пишу программу, суть такова: Нужно строки из файла отсортировать по длине строки, а строки равной длины отсортировать по алфавиту. Все работало, когда было фиксированное количество строк, но когда я начал количество строк выражать через n, все почему-то работать перестало - циклится и выводит вместо нужных строк рандомные символы. Подскажите, пожалуйста, в чем может быть...
C++ реализация двухуровневого меню Помогите пожалуйста разобраться где я неправильно сделал? Нужно сделать двухуровневое меню.. вроде все так, но почему то ошибки((( вот код: #include <errno.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <ncurses.h> #include <iostream> подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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));
    }
}
 
Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru