Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Crudelis
Шаровик затейник
679 / 428 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
#1

Создать битовое поле для хранения времени - C++

14.05.2010, 15:32. Просмотров 2386. Ответов 5
Метки нет (Все метки)

Начали изучать битовые числа, запутался, не могу понять что и как должно реализовывать и как вообще работать с этими битами и для чего(((
Есть задачка:

Создать битовое поле для хранения времени (часы, минуты, секунды, миллисекунды). Написать функции для установки и получения времени в(из) битовое(-го) поле(-я).

Помогите решить пожалуйста, если можно с комментами . Заранее спасибо
http://www.cyberforum.ru/cpp-beginners/thread694649.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2010, 15:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создать битовое поле для хранения времени (C++):

Битовые операции. Написать программу для хранения в битовом поле информации о конфигурации компьютера.
1. Написать программу для хранения в битовом поле информации о конфигурации...

Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад
Реализуйте класс для хранения ФИО и номера телефона человека, класс для...

Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения
Задание:Разработать битовое поле, описывающее состояния элементов прибора....

Создать класс для хранения размеров четырехугольника
Создать класс для хранения размеров четырехугольника. Реализовать методы класса...

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

5
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
14.05.2010, 15:57 #2
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от Crudelis Посмотреть сообщение
Начали изучать битовые числа, запутался, не могу понять что и как должно реализовывать и как вообще работать с этими битами и для чего(((
Есть задачка:

Создать битовое поле для хранения времени (часы, минуты, секунды, миллисекунды). Написать функции для установки и получения времени в(из) битовое(-го) поле(-я).

Помогите решить пожалуйста, если можно с комментами . Заранее спасибо
если память не изменяет, должно быть примерно так:
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
 struct bitClock
  {
   int Min            : 6;
   int Sec            : 6;
   int mSec          : 10
   int H               : 5;
  };
 
class myClock
{
  public: 
     myClock()
     {
          clockBit.H = 0;
          clockBit.Min = 0;
          clockBit.Sec = 0;
          clockBit.mSec = 0;
     }
     bitClock getTime()
     {
          clockBit;
     }
     void setTime(int h, int m, int s, int ms)
     {
          clockBit.H = h;
           clockBit.Min = m;
          clockBit.Sec = s;
          clockBit.mSec = ms;
     }
   private:
       bitClock clockBit;
 
}
1
Crudelis
Шаровик затейник
679 / 428 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
14.05.2010, 16:34  [ТС] #3
l_a_m, а через структуру можете привести пример.

Добавлено через 1 минуту
хотя не нужно, спасибо я разобрался)
0
madfax
1 / 1 / 2
Регистрация: 05.06.2016
Сообщений: 15
09.07.2016, 13:49 #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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
 
using std::cout;
using std::endl;
using std::cin;
 
struct Unit
{
    unsigned Time : 27;//5+6+6+10
};
 
enum Shift{ nHoure = 4194304, nMinute = 65536, nSecond = 1024, nMillisecond = 1, print_nHour = 22, print_nMinute = 16, print_nSecond = 10, print_nMillisecond = 0 };
 
void set(Unit &UserTime){
 
    cout << "ranges:\n hour (0..23)\tminute (0..59)\n second (0..59)\tmillisecond (0..999)\n";
    cout << "\nuse the following formats\n"hour:minute:second:millisecond"";
    cout << "\n"hour minute second millisecond" #";
 
    char *temp = new char[16];
    gets(temp);
    temp = strtok(temp, ": ");
 
    UserTime.Time = 0;
    Shift bits = nHoure;
 
    while (temp){
 
        UserTime.Time += (atoi(temp) * bits);
 
        if (bits == nHoure) bits = nMinute;
        else if (bits == nMinute) bits = nSecond;
        else if (bits == nSecond) bits = nMillisecond;
 
        temp = strtok(NULL, ": ");
    }
 
    delete[] temp;
}
 
void print(Unit &UserTime){
    unsigned temp, delta = 0;
    Shift bits = print_nHour;
    cout << "\nClock\n";
 
    for (size_t i = 0; i < 4; i++)
    {
        temp = UserTime.Time >> bits;
        cout << (temp - delta) << " : ";
        delta = temp << 6;
        if (i == 2) delta <<= 4;
 
 
        if (bits == print_nHour) bits = print_nMinute;
        else if (bits == print_nMinute) bits = print_nSecond;
        else if (bits == print_nSecond) bits = print_nMillisecond;
    }
 
    //rewrite last ":"
    cout << "\b\b \n\n";
}
 
void main(){
    Unit UserTime;
    set(UserTime);
    print(UserTime);
}
0
Renji
2127 / 1486 / 453
Регистрация: 05.06.2014
Сообщений: 4,325
09.07.2016, 14:04 #5
Цитата Сообщение от Crudelis Посмотреть сообщение
и для чего(((
Ни для чего. На современные реалии - экономия на спичках, абсолютно не окупающая сопутствующие тормоза (процессор то в битовые поля не умеет).
0
Croessmah
++Ͻ
14152 / 8077 / 1513
Регистрация: 27.09.2012
Сообщений: 19,917
Записей в блоге: 3
Завершенные тесты: 1
09.07.2016, 21:10 #6
Цитата Сообщение от Renji Посмотреть сообщение
Ни для чего.
Очень удобно парсить пакеты неких данных.
Например, недавно использовал для разбора IPv4/TCP.
0
09.07.2016, 21:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2016, 21:10
Привет! Вот еще темы с решениями:

Создать класс для хранения целого числа
Задание: Создать класс, для хранения целого числа. Перегрузить операторы «+»,...

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

Как создать картинку, для хранения информации в пикселях
Как создать картинку? Я хочу хранить в пикселях информацию. Видел код на...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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