Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [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,  07:12 Найти цитируемый пост)
Помогите исправить программы.

Так что неверно-то?

Автор: emrysdrag 23.4.2015, 13:11
Не знаю, но эти программы не работают у  меня и я не могу найти ошибки

Автор: feodorv 23.4.2015, 15:27
Цитата(emrysdrag @  23.4.2015,  13:11 Найти цитируемый пост)
эти программы не работают

Какие признаки неработы этих программ?

Автор: JackYF 23.4.2015, 20:59
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)