-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBooFoo.pas
More file actions
executable file
·59 lines (46 loc) · 1.82 KB
/
Copy pathBooFoo.pas
File metadata and controls
executable file
·59 lines (46 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
program BooFoo;
// Функция для преобразования целого числа в бинарную строку:
function IntToBinStr(number: Integer): String;
var
i, half: Integer;
begin
Result := '';
for i := 1 to number do begin
half := number div 2;
Result := IntToStr(number - half * 2) + Result;
number := half;
if half = 0 then break;
end;
end;
const
FIELD_WIDTH = 10; // длина поля для вывода элементов матрицы.
var
n, i, j: Integer;
f, b: String;
begin
WriteLn('ВХОДНЫЕ ДАННЫЕ');
WriteLn('Введите строку содержащую векторную запись булевой функции:');
ReadLn(f);
n := Length(IntToBinStr(Length(f) - 1)); // количество аргументов булевой функции.
WriteLn;
WriteLn('ВЫХОДНЫЕ ДАННЫЕ');
WriteLn('Матрица:');
// Вывод заголовка матрицы:
for i := 1 to n do begin
Write(Concat('x[', IntToStr(i), ']') : FIELD_WIDTH);
end;
WriteLn('f' : FIELD_WIDTH);
// Вывод строк:
for i := 0 to Length(f) - 1 do begin
b := IntToBinStr(i); // получаем очередной набор аргументов булевой функции по номеру i.
// Вывод нулей в начале записи числа:
for j := 1 to n - Length(b) do begin
Write('0' : FIELD_WIDTH);
end;
// Вывод аргументов булевой функции из полученного набора:
for j := 1 to Length(b) do begin
Write(b[j] : FIELD_WIDTH);
end;
WriteLn(f[i + 1] : FIELD_WIDTH); // вывод значения булевой функции.
end;
end.