Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> битовые поля 
:(
    Опции темы
papam
Дата 5.2.2006, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: 1
Всего: 4



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

#include<iostream.h>
struct STime
{
             unsigned short*pmilliseconds_;
             
};
{
  unsigned char  hours   :5;
  unsigned char  minutes :6;
  unsigned char  seconds :6;
  unsigned short milliseconds :10;
};

void SetTime(struct STime* psTime_, 
             unsigned char hours_, 
             unsigned char minutes_, 
             unsigned char seconds_,
             unsigned short milliseconds_
             )
{
  psTime_->hours = hours_;
  psTime_->minutes = minutes_;
  psTime_->seconds = seconde_;
  psTime_->milliseconds_ = milliseconds_;
}

void GetTime(struct  STime*  psTime_, 
             unsigned char*  phours_, 
             unsigned char*  pminutes_, 
             unsigned char*  pseconds_,
  *phours_   = psTime_->hours;
  *pminutes_ = psTime_->minutes;
  *pseconds_ = psTime_->seconds;
  *pmilliseconds = psTime_->millisecomds;
}


unsigned char g_hours = 12;
unsigned char g_mins  = 10;
unsigned char g_secs  = 15;
unsigned char g_msecs = 50;

struct STime g_sTime;

void main()
{
  SetTime(&g_sTime, g_hours, g_mins, g_secs, g_msecs);

  cout<<SetTime<<"\n";

  GetTime(&g_sTime, &g_hours, &g_mins, &g_secs, &g_msecs);

  
}

--------------------
No Fucking Future
PM MAIL ICQ   Вверх
Partizan
Дата 5.2.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



ммм....а можно узнать почему используется unsigned char???
а в milliseconds unsigned short???


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
_hunter
Дата 6.2.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



потому как что часы что минуты вряд ли перевалят даже за сотню, а милисекунды спокойно доходят до тысячи...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
threef
Дата 6.2.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Цитата

#include<iostream.h>
struct STime
{
  unsigned  hours  :5,
        minutes:6,
        seconds :6,
        milliseconds :10;
};

void SetTime(struct STime* psTime_,
            int hours_,
            int minutes_,
            int  seconds_,
            int milliseconds_
            )
{
  psTime_->hours = hours_;
  psTime_->minutes = minutes_;
  psTime_->seconds = seconde_;
  psTime_->milliseconds_ = milliseconds_;
}

void GetTime(struct  STime*  psTime_,
            int*  phours_,
            int*  pminutes_,
            int*  pseconds_,
  *phours_  = psTime_->hours;
  *pminutes_ = psTime_->minutes;
  *pseconds_ = psTime_->seconds;
  *pmilliseconds = psTime_->millisecomds;
}


int g_hours = 12,
g_mins  = 10,
g_secs  = 15,
g_msecs = 50;

struct STime g_sTime;

void main()
{
  SetTime(&g_sTime, g_hours, g_mins, g_secs, g_msecs);

  cout<<g_sTime.hours<<"\n"<<g_sTime.minutes<<"\n"
        <<g_sTime.seconds<<"\n"<<g_sTime.milliseconds<<"\n";

  GetTime(&g_sTime, &g_hours, &g_mins, &g_secs, &g_msecs);

  cout<<g_hours<<"\n"<<g_mins<<"\n"
        <<g_sex<<"\n"<<g_msex<<"\n";
 
}


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

Это сообщение отредактировал(а) threef - 6.2.2006, 12:20
PM MAIL   Вверх
Partizan
Дата 6.2.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



Цитата(_hunter @ 6.2.2006, 11:54)
потому как что часы что минуты вряд ли перевалят даже за сотню, а милисекунды спокойно доходят до тысячи...

а максимальное значение unsigned short разве не меньше 1000?

всё....сделал sizeof(unsigned short)... точно...больше 1000...

Это сообщение отредактировал(а) Partizan - 6.2.2006, 13:51


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.