Завдання з машиною Поста 5. Напишіть програму, що подвоює довільне число, що розташовано на стрічці машини Поста, додаючи мітки справа від нього. Каретка знаходиться над крайньою лівою меткою числа. Первісне число лишається на місці
Const n=10; type ar=array[1..n+1] of integer; var a:ar; i,p:integer; procedure pr(var a:ar; p:integer; var k:integer); begin k:=1; while a[k]<>p do k:=k+1; end; begin Randomize; writeln('Массив A:'); for i:=1 to n do begin a[i]:=random(31); write(a[i]:4); end; writeln; p:=17; a[n+1]:=p; pr(a,p,i); if i<n then writeln('Значение 17 найдено, номер элемента = ',i) else writeln('Значения 17 в массиве нет'); end.
Пример: Массив A: 14 5 7 17 25 15 28 0 24 0 Значение 17 найдено, номер элемента = 4
таблица истинности:
X Y Z X+¬Y Z⇒(X+¬Y) ¬X F
0 0 0 1 1 1 1
0 0 1 1 1 1 1
0 1 0 0 1 1 1
0 1 1 0 0 1 1
1 0 0 1 1 0 1
1 0 1 1 1 0 1
1 1 0 1 1 0 1
1 1 1 1 1 0 1
F =1 тождественно истинна ,
так как её значения равны 1 при любых X,Y,Z
type ar=array[1..n+1] of integer;
var
a:ar; i,p:integer;
procedure pr(var a:ar; p:integer; var k:integer);
begin
k:=1;
while a[k]<>p do k:=k+1;
end;
begin
Randomize;
writeln('Массив A:');
for i:=1 to n do
begin
a[i]:=random(31);
write(a[i]:4);
end;
writeln;
p:=17;
a[n+1]:=p;
pr(a,p,i);
if i<n
then writeln('Значение 17 найдено, номер элемента = ',i)
else writeln('Значения 17 в массиве нет');
end.
Пример:
Массив A:
14 5 7 17 25 15 28 0 24 0
Значение 17 найдено, номер элемента = 4