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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
#1

Упорядочить байты машинного слова - C++

27.11.2010, 19:02. Просмотров 749. Ответов 2
Метки нет (Все метки)

Задание стоит так:
Упорядочить байты четырьохбайтового машинного слова по возрастанию их значений, использовав подходящие структуры данных.
Подскажите что это за структуры и как вообще это делается

Добавлено через 16 минут
Может использовут такую вот структуру?
C++
1
2
3
4
5
6
7
struct Word4
{
    unsigned _byte1: 8;
    unsigned _byte2: 8;
    unsigned _byte3: 8;
    unsigned _byte4: 8;
}
обьясните как именно сравнивать байты?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 19:02     Упорядочить байты машинного слова
Посмотрите здесь:

Упорядочить байты - C++
Помогите додумать. Нужны упорядочить байты в порядке возрастания количества еденичных битов в них(ввод в шестнадцетиричнйо системе). ...

Упорядочить слова по возрастанию количеств букв "d", входящих в слова - C++
Помогите пожалуйста написать программу. Дана последовательность слов, разделенных пробелами, за последним словом - точка. Упорядочить слова...

Упорядочить слова в предложении - C++
Упорядочить слова в предложении

Упорядочить слова в алфавитном порядке - C++
Помогите, пожалуйста, исправить ошибки.. Задание было такое: Дана строка, содержащая символы. Часть этих символов заключена в парные ...

Упорядочить слова в текстовом рядке - C++
Помогите,пожалуйста,со следующим заданием. Ввести в текстовый рядок несколько слов,и упорядочить их по алфавиту.

Упорядочить слова по алфавиту (строки) - C++
Здравствуйте! Не могу пока осилить :wall:. Может у кого-то есть идеи по реализации ? (или уже готовый код:jokingly:) Задание...

Упорядочить слова в алфавитном порядке на С - C++
ребят помогите с задачкой, а то препод озадачил. самому не получается сделать. требуется отсортировать слова в строке в алфавитном...

Упорядочить слова строки по алфавиту - C++
Здравствуйте! Уважаемые форумчане, выручите, пролежал в больничке на этой теме, а закрыть семак надо. С клавиатуры вводится строка,...

Упорядочить слова в порядке возрастания их длины - C++
Дано предложение, слова в нем разделены пробелом. Упорядочить слова в порядке возрастания их длины.

Упорядочить в строке слова по убыванию их длины. - C++
Дана строка символов, состоящий из отдельных слов, разделенных пробелом. Упорядочить слова по длине (по убыванию) и вывести на печать.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
27.11.2010, 19:07     Упорядочить байты машинного слова #2
Думаю, если считать, что char имеет размер 1 байт, а int - 4 байта, то проще сделать
C++
1
2
3
4
5
union
{
  int dword;
  char bytes[4];
}
и отсортировать bytes любым методом.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
27.11.2010, 19:44     Упорядочить байты машинного слова #3
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
//////////////////////////////////////////////////////////////////////////////////////
//Упорядочить байты четырьохбайтового машинного слова по возрастанию их значений, 
//использовав подходящие структуры данных. 
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>
//////////////////////////////////////////////////////////////////////////////////////
typedef unsigned  T_4_byte_word;
typedef char      T_byte;
//////////////////////////////////////////////////////////////////////////////////////
union T_4_byte
{
    T_4_byte_word  _4_byte_word;
    T_byte         byte_arr[4];
};
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << "n = ";
        T_4_byte  _4_byte;
        std::cin >> _4_byte._4_byte_word;        
        std::sort(_4_byte.byte_arr, _4_byte.byte_arr + 4);
        std::cout << "Число n с отсортированными байтами по возрастанию"
                  <<std::endl
                  << "\t"
                  << "от младших к старшим: "
                  << std::hex
                  << std::setfill('0')
                  << std::setw(10)
                  << std::showbase
                  << std::internal
                  << _4_byte._4_byte_word
                  << std::endl;
 
        std::reverse(_4_byte.byte_arr, _4_byte.byte_arr + 4);
        std::cout << "\t"
                  << "от старших к младшим: "
                  << std::setfill('0')
                  << std::setw(10)
                  << _4_byte._4_byte_word
                  << std::endl
                  << std::endl
                  << std::endl
                  << std::endl;            
    }
}
Ответ Создать тему
Опции темы

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