5 bit – под число
4 bit – под месяц
12 bit – под год (достаточно до 4095 года)
Пример:
#include <stdio.h>
#include <stdlib.h>
void flush(void) {
while (getchar() != '\n');
}
int day(void) {
int value = 0;
const char* msg = "Day: ";
printf(msg);
do {
while (!scanf_s("%i", &value)) {
printf(msg);
flush();
}
} while (!value || value > 31);
return value;
}
int month(void) {
int value = 0;
const char* msg = "Month: ";
printf(msg);
do {
while (!scanf_s("%i", &value)) {
printf(msg);
flush();
}
} while (!value || value > 12);
return value;
}
int year(void) {
int value = 0;
const char* msg = "Year: ";
printf(msg);
do {
while (!scanf_s("%i", &value)) {
printf(msg);
flush();
}
} while (!value || value > 4095);
return value;
}
int date(void) {
int box = 0;
int d = day();
int m = month();
int y = year();
box = y << 4;
box += m;
box <<= 5;
box += d;
return box;
}
void parse(int box) {
int d = box & 0x1F;
int m = (box >> 5) & 0xF;
int y = (box >> 9) & 0xFFF;
printf("%02i.%02i.%i\n", d, m, y);
}
int main(void) {
int box = date();
parse(box);
system("pause > nul");
}
Другие языки программирования и технологии
Как можно записать дату в одну переменную? Си
Фёдор Сумкин
Красиво и экономно. Вспоминаются битовые поля.
Например, вручную сохранять дату в виде кол-ва секунд от 01.01.1970 00:00:00 (unix timestamp). При использовании 64-битных целых чисел этого тебе для чего угодно хватит.
Или использовать стандартные типы struct tm или time_t, описанные в файле time.h
Или использовать стандартные типы struct tm или time_t, описанные в файле time.h
Алимжан Абдихадиров
ну тут еще нюанс, что хранить не текущую дату, а ту которуб вводить пользователь, например в формате 10.09.2010 13:45
Михаил Гаврилов
даты-время time_t - сравнивай и рапредеяй как надо -
используй - обычную сортировку
ps есть также
функция difftime - вычесляет разницу даты-времени в секундах
используй - обычную сортировку
ps есть также
функция difftime - вычесляет разницу даты-времени в секундах
Похожие вопросы
- C++ как переменную (signed int) разделить на старший и младший байт, а после записать в 2е другие переменные типа char?
- В каких случаях в Си надо использовать переменные static, а не глобальные переменные?
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
- С# - нужно сделать так, чтобы консоль читала слова, как переменные, а не просто слова...
- Что "констант" в языке си? Говорят переменные которые ранее хранятся в программе и их нельзя изменять. Объясните поточнее
- Есть четыре переменные, нужно рандомом присвоить им значения от 0 до 3, так чтобы значения не повторялись. пишу на Си)
- Как сложить переменную ? Delphi 7 Что никто не знает ответа что ли ?Н
- Снова Паскаль) ) Переменные и занимаемая ими память
- Указатели это переменные в которых содержатся адреса других переменных?
- Как в С++ двухмерный массив записать в переменную??