Скласти двійкові числа в pascal - технічний форум

Та не важко, будь ласка.

1. В основній програмі:

n - розрядність (кількість знаків) двійкового числа
i - змінна циклу
М - саме число. Формується методом випадкової генерації нулів і одиниць від молодшого розряду до (n-1) -го. У старший (n-й) розряд завжди записується 1.
Т - лічильник розрядів
М1 - результат зсуву вліво всіх розрядів числа М на один і приписування справа нуля. У двійковій запису відповідає множенню числа М на два. Для "внутрішнього вживання" М1 = М * 10.

2. У функції Bin2Dec (перетворення двійкового числа в десяткове):

b, B1 - конвертувати двійковечисло
Q - чергова варта цифра (0 або 1), починаючи з молодшого розряду
r - двійковий вага чергового розряду
D - зайвий ідентифікатор. Прибрав.

3. У функції двійкового складання Sum2Bin:

b1, b2 (b1a, b2a) - складаються виконавчі числа
b3 - формована двоичная сума
r - десятковий вага розряду
с1, с2, с3 - цифри (0 або 1) в черговому розряді складаються чисел і суми.
d - переноситься в наступний розряд цифра.

__________________
With Mozilla Firefox - straight to communism!

Vladimir_S, Здравствуйте! Я вчора здавала це завдання і мені сказали, щоб зробити її більш просто, щоб можна було ввести будь-який за розміром двійковечисло і зробити все за допомогою функції і не переводити 3 в десяткову систему числення. Я дещо написала (не знаю чи правильно), але не можу розібратися як порахувати число p. Ви може знаєте як це зробити? Підкажіть будь ласка!

function um (const s: string): longint;
var
i: integer;
r: longint;
begin
r: = 0;
for i: = 1 to length (s) do
begin
if (s [i] = '1') or (s [i] = '0') then
r: = r * 2 + (ord (s [i]) - ord ( '0'))
else begin
um: = -i;
exit;
end;
end;
um: = r
end;

function umnogenie (dec: longint): string;
begin
if dec = 0 then umnogenie: = ''
else
if odd (dec) then
umnogenie: = umnogenie (dec div 2) + '1'
else
umnogenie: = umnogenie (dec div 2) + '0';
end;

var
s: string;
d1: longint;

Write ( 'введіть перше двійковечисло:'); ReadLn (s);
d1: = um (s);
WriteLn ( 'Твір одно', umnogenie (d1 * t));
Readln
end.

Схожі статті