Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C++] Программа на вывод числа в доп.,обратном...кодах |
Автор: emrysdrag 23.4.2015, 07:12 |
Помогите исправить программы. Задание: Вывести однобайтовое целое знаковое число в двоичном коде (в дополнительном, прямом и обратном кодах): А) с использованием операции деления; Б) с использованием двоичной маски - без деления А) #include "stdafx.h" #include <iostream> void func(char N) { int Arr[8]; for (int i = 0; i < 8; i++) Arr[i] = 0; for (int i = 0; N != 0; i++) { Arr[i] = N % 2; N = N / 2; } for (int i = 7; i >= 0; i--) printf("%d", Arr[i]); } int main() { setlocale(LC_ALL, ""); char N = 0; printf("Введите число: "); scanf_s("%c", &N); if (N >= 0) { printf("\nДополнительный код: "); func(N); printf("\nПрямой код: "); func(N); printf("\nОбратный код: "); func(N); printf("\n"); } if ((N<0) && (N >= -127)) { printf("\nДополнительный код: "); for (int j = 7; j >= 0; j--) printf("%d", -(N >> j) % 2); N = N*(-1); printf("\nПрямой код: "); int Arr[8]; for (int i = 0; i < 8; i++) { Arr[i] = 0; } for (int i = 0; N != 0; i++) { Arr[i] = N % 2; N = N / 2; } Arr[7] = 1; for (int i = 7; i >= 0; i--) { printf("%d", Arr[i]); } printf("\nОбратный код: "); printf("%d", Arr[7]); for (int i = 6; i >= 0; i--) { if (Arr[i] == 1) printf("0"); else printf("1"); } printf("\n"); } if ((N == -128)) { printf("\nДополнительный код: "); for (int j = 7; j >= 0; j--) printf("%d", -(N >> j) % 2); printf("\nПрямой код: ---"); printf("\nОбратный код: ---\n"); } return 0; Б) #include "stdafx.h" #include <iostream> void func(char N) { for (int i = 7; i >= 0; i--) printf("%d", (N >> i) & 1); } int main() { setlocale(LC_ALL, ""); char N = 0; printf("Введите число: "); scanf_s("%c", &N); if (N >= 0) { printf("\nДополнительный код: "); func(N); printf("\nПрямой код: "); func(N); printf("\nОбратный код: "); func(N); printf("\n"); } if ((N < 0) && (N >= -127)) { printf("\nДополнительный код: "); for (int j = 7; j >= 0; j--) printf("%d", -(N >> j) & 1); N = N*(-1); printf("\nПрямой код: "); printf("1"); for (int j = 6; j >= 0; j--) printf("%d", (N >> j) & 1); printf("\nОбратный код: "); int Arr[8]; Arr[7] = 1; for (int j = 6; j >= 0; j--) Arr[j] = 0; for (int j = 6; j >= 0; j--) Arr[j] = (N >> j) & 1; for (int j = 6; j >= 0; j--) { if (Arr[j] == 1) printf("0"); else printf("1"); } printf("\n"); } if ((N == -128)) { printf("\nДополнительный код: "); for (int j = 7; j >= 0; j--) printf("%d", -(N >> j) & 1); printf("\nПрямой код: ---"); printf("\nОбратный код: ---\n"); } return 0; } |
Автор: feodorv 23.4.2015, 09:43 |
Так что неверно-то? |
Автор: emrysdrag 23.4.2015, 13:11 |
Не знаю, но эти программы не работают у меня и я не могу найти ошибки |
Автор: feodorv 23.4.2015, 15:27 |
Какие признаки неработы этих программ? |
Автор: JackYF 23.4.2015, 20:59 |
Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |