Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Перевірка за допомогою демонстраційної програми правильності результатів, отриманих під час виконання індивідуального завдання у відповідності до п.3.4



3.5.1. Спочатку треба вручну отримати результати для свого індивідуального завдання і заповнити всі позиції в таблицях 2 і 3, як указано в п.3.3.2 для варіанта 30 із таблиці 3.1.

3.5.2. Перевірити правильність заповнення всіх клітинок у таблицях 3.2 і 3.3 за допомогою демонстраційної програми, текст якої розміщений нижче.

3.5.3. Демонстраційну програму треба запустити на виконання в одному з середовищ, яке підтримує програмування на мові Pascal.

3.5.4. Текст демонстраційної програми.

program summirovan;

uses crt;

var

a,b:integer; {Введенные числа}

{Те же числа, но в кодах}

a_pr,b_pr:word;

a_ok,b_ok:word;

a_dk,b_dk:word;

d:char;

function plusdk(a,b:word):word; { Сложение в дополнительном коде }

var

trans:word; { Бит переноса }

digit:word; { Текущий бит }

result:word; { Для хранения промежуточного результата }

{при вычислении бита переноса }

c:word; { Сумма }

i:byte; { Счетчи к}

begin

trans:=0;

for i:=0 to 7 do begin

digit:=(a and (1 shl i)) xor (b and (1 shl i)) xor (trans shl i);

if digit=0 then c:=c and (255 xor (1 shl i))

else c:=c or (1 shl i);

result:=(a and (1 shl i))and(b and(1 shl i));

result:=result or ((b and(1 shl i))and(trans shl i));

result:=result or ((a and (1 shl i))and(trans shl i));

if result<>0 then trans:=1 else trans:=0;

end;

plusdk:=c; { Возвращение результата }

end;

function plusok(a,b:word):word; { Сложение в обратном коде }

var

trans,digit,result:word;

c:word;

i:byte;

begin

trans:=0;

for i:=0 to 7 do begin

digit:=(a and (1 shl i)) xor (b and (1 shl i)) xor (trans shl i);

if digit=0 then c:=c and (255 xor (1 shl i))

else c:=c or (1 shl i);

result:=(a and (1 shl i)) and (b and (1 shl i));

result:=result or ((b and (1 shl i))and(trans shl i));

result:=result or ((a and (1 shl i))and(trans shl i));

if result<>0 then trans:=1 else trans:=0;

end;

if trans=1 then c:=plusok(c,1); { Перенос из знакового разряда }

{прибавляется к младшему разряду}

plusok:=c;

end;

function bdtos(a:word):string; { Преобразование битов числа в строку }

var

i:byte;

s:string;

begin

s:='';

for i:=7 downto 0 do

s:=s+chr(ord(((1 shl i) and a)<>0)+48);

bdtos:=s;

end;

function prtoi(a:word):integer; { Преобразование из прямого кода в integer }

begin

if a<127 then prtoi:=a

else prtoi:=-(a and 127);

end;

function itopr(a:integer):word; {Преобразование из integer в прямой код }

begin

if a>=0 then itopr:=a

else itopr:=abs(a) or (1 shl 7);

end;

function prok(a:word):word;{ Преобразование из прямого кода в обратный }

{и наоборот}

begin

if a<127 then prok:=a

else prok:=(not a) or (1 shl 7);

end;

function prdk(a:word):word; { Преобразование из прямого кода в дополнительный }

{и наоборот}

begin

if a<127 then prdk:=a

else prdk:=plusdk((not a) or (1 shl 7),1);

end;

begin

while true do

begin

clrscr;

write( 'Введите A и B через пробел: ');

readln(a,b);

a_pr:=itopr(a);

b_pr:=itopr(b);

a_ok:=prok(a_pr);

b_ok:=prok(b_pr);

a_dk:=prdk(a_pr);

b_dk:=prdk(b_pr);

writeln(' [A]пк = ',bdtos(a_pr));

writeln(' [B]пк = ',bdtos(b_pr));

writeln(' [A]ок = ',bdtos(a_ok));

writeln(' [B]ок = ',bdtos(b_ok));

writeln(' [A]дк = ',bdtos(a_dk));

writeln(' [B]дк = ',bdtos(b_dk));

writeln( 'Результат в обратном коде: ');

writeln(' [A]oк+[B]oк = ',bdtos(plusok(a_ok,b_ok)));

writeln( 'Результат в дополнительном коде :');

writeln(' [A]дк+[B]дк = ',bdtos(plusdk(a_dk,b_dk)));

write( 'Результат в прямом коде :');

writeln(bdtos(prdk(plusdk(a_dk,b_dk))));

writeln( 'Результат в 10-м коде:' );

writeln(' [A]дес+[B]дес = ',prtoi(prdk(plusdk(a_dk,b_dk))));

gotoxy(30,25);

textcolor(15);

writeln( 'Нажмите: Enter - чтобы продолжить и ');

write( ' 1 - чтобы выйти' );

d:=readkey;

if (d='1') then halt;

end;

end.





Дата публикования: 2014-12-10; Прочитано: 204 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...