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

помогите понять смысл задания - C++

Восстановить пароль Регистрация
 
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
23.01.2012, 16:01     помогите понять смысл задания #1
(*3.5) Реализуйте версии istream и ostream для чтения и записи чисел в двоич-
двоичном виде без преобразования их в символы. Рассмотрите достоинства и недостат-
недостатки этого подхода по сравнению с подходом, основанным на символьном пред-
представлении.


имеется ввиду например, что если есть число 64 и мы выводим его в ostream то в консоли должно появиться 01000000 и если мы имеет переменную int или long, в которую надо прочитать и набираем число
64 то в переменную попасть должно 1000000? Или имеется ввиду то как представлено хранения ВНУТРИ класса потока? а на выходе как и на входе будет 64?

если я правильно понял то символьное представление это представление каждой цифры в виде числового значения из таблицы символов. а в задаче надо сделать некий буфер пусть размером в 4 байта, и при помощи битовых операций хранить в нем число в двоичной форме?

Напишите просто кто что думает. Не улавливаю смысл задания. Код не надо. Просто ваши мысли на эту тему
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.01.2012, 16:11     помогите понять смысл задания #2
вводим 1000000, а в переменную записываем 64
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
23.01.2012, 16:48  [ТС]     помогите понять смысл задания #3
слишком просто как то для сложности 3.5, тогда и делать не буду. Может есть еще варианты?
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
23.01.2012, 17:06     помогите понять смысл задания #4
тут же русским по белому написано "двоичном виде без преобразования их в символы"
вот в чем собака порылась

в символьном виде это весьма просто.
если для тебя это просто без использования символьного типа - ты явно не безнадежен. делать надо в любом случае, если не можешь уточнить задание. либо по шапке получить за пустое место вместо работы, либо по уже не так получить за старание.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.01.2012, 01:09  [ТС]     помогите понять смысл задания #5
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
struct Stor
{
    unsigned char buf [4];
 
    Stor():buf_count(3)
    { 
        clear();        
    };
    ~Stor(){};
 
        int buf_count;  
 
    void storNum(unsigned int num)
    {
        
        if(num<=255) buf[3]|=num;
        else
        {
        unsigned int okt = num/255;
        int mask = num%256;
        buf[3]|=mask;
        num/=256;
        buf_count--;
        calculate(num);
        }
    }
 
    
 
 
    unsigned int extractNum()
    {
        unsigned int num = 0;
        num=  (0|buf[3]) + (0|buf[2])*256 + (0|buf[1])*65536 + (0|buf[0]) *16777216;
        clear();
    
    return num;
 
    }
private:
    void calculate ( unsigned int num)
    {       
 
        int okt_0 = num/256;
        int mask_0 = num%256;
        if(buf_count==0||(!okt_0&&!mask_0)) {buf[buf_count]|=num; return;}
        
        buf[buf_count]|=mask_0;
        buf_count--;
        num/=256;
        return calculate(num);  
    }
 
    void clear()
    {
        for(int i=0;i<4;i++)buf[i] =0;
        buf_count = 3;
    }
 
};
решение для хранитьбы 32битного беззнакового целого в char[4];
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
25.01.2012, 01:36     помогите понять смысл задания #6
Может поможет чем нибудь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void displayBits( unsigned int num ) {
    const int SHIFT = 8 * sizeof( unsigned int );
    const int MASK = 1 << ( SHIFT - 1 );
 
    for ( size_t i = 1; i <= SHIFT; i++ ) {
    std::cout << ( MASK & num ? '1' : '0' );
    num <<= 1;
 
    if ( i % 8 == 0 )
        std::cout << ' ';
    }
 
    std::cout << std::endl;
}
Yandex
Объявления
25.01.2012, 01:36     помогите понять смысл задания
Ответ Создать тему
Опции темы

Текущее время: 06:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru