Определить объединение двух полей. Первое поле – массив из двух байт, второе – слово - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите написать программу( лучше с комментариями чтобы разобраться) Определить объединение из двух полей Первое поле - массив из двух байт, второе - слово Ввести случайное целое число в диапазоне от 5 до 200 Округлить его до ближайшего целого, кратного 3 Если число больше 100 - вычесть из него 29, если число меньше - прибавить 119. Вывести полученный результат, старший байт результата и младший байт результата в шестнадцатеричном виде

Решение задачи: «Определить объединение двух полей. Первое поле – массив из двух байт, второе – слово»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <Windows.h>
  3.  
  4. union TData
  5. {
  6.   unsigned char bytes[2];
  7.   WORD word;
  8. };
  9.  
  10. WORD RoundTo3(const WORD a)
  11. {
  12.   if (a % 3 == 1) return a - 1;
  13.   else if (a % 3 == 2) return a + 1;
  14.   else return a;
  15. }
  16.  
  17. int main(void)
  18. {
  19.   union TData data;
  20.  
  21.   scanf("%hu", &data.word);
  22.  
  23.   data.word = RoundTo3(data.word);
  24.  
  25.   if (data.word > 100) data.word -= 29;
  26.   else data.word += 119;
  27.  
  28.   printf("LO = 0x%.2hhX, HI = 0x%.2hhX\n", data.bytes[0], data.bytes[1]);
  29.  
  30.   return 0;
  31. }

Объяснение кода листинга программы

  1. Объявление и инициализация переменной data типа union TData
  2. Считывание значения второго поля (WORD) из стандартного ввода с помощью функции scanf
  3. Приведение значения второго поля (WORD) к ближайшему кратному трём с помощью функции RoundTo3
  4. Проверка значения второго поля (WORD) и уменьшение его на 29, если оно больше 100
  5. Увеличение значения второго поля (WORD) на 119, если оно меньше или равно 100
  6. Вывод значений первого поля (unsigned char bytes[2]) с помощью функции printf
  7. Возврат 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы