Programs
Вариант 1
Главная
Код данной программы предназначен только для VS. В Dev-C она будет работать некорректно из-за затирания переменных.
Здесь ошибка
Код:
#include "stdafx.h" #include #include #include void unpack() { unsigned char h = 0, s = 0; unsigned int t = 0, UnitStateWord= 0; printf_s(" Введите 16-ричное число от 0 до FFFF "); scanf_s("%x", &UnitStateWord); h = (UnitStateWord >> 14) & 0x3; t= (UnitStateWord >> 5) & 0x1FF; s = UnitStateWord & 0x1F; printf_s(" Номер головки = %d\n", h); printf_s(" Номер дорожки = %d\n", t); printf_s(" Номер сектора = %d\n", s); } void pack() { unsigned char h,s; int t, UnitStateWord = 0; printf_s("Введите номер головки (0-3) >"); scanf_s("%hhd", &h); UnitStateWord = (h & 0x3) << 14; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s("Введите номер дорожки (0 - 511) >"); scanf_s("%d", &t); UnitStateWord |= (t & 0x1FF) << 5; printf_s("\n Результат = %04x\n", UnitStateWord); printf_s(" Введите номер сектора (0 - 31) >"); scanf_s("%hhd", &s); UnitStateWord |= t & 0x1F; printf_s("\n Результат= %04x\n", UnitStateWord); } int main() { setlocale(LC_ALL, "RUSSIAN"); pack(); unpack(); system("pause"); return 0; }