складіть блок схему фрагмента алгоритму у якому цикл з передумовою вкладенно в повне розлуження і який виконується, якщо результат перевірки умови розгалуження ні.
//Как-то громоздко получилось, но я так вижу. Эх, выходные. const n=5; var a:array[1..n] of integer; b:array[0..8] of integer; ar:array[1..n] of integer; i,c,j:integer; begin randomize; writeln('Array:'); for i:=1 to n do begin a[i]:=random(8); write(a[i]:4); end; for i:=1 to n do begin; for j:=0 to 8 do if a[i]=j then inc(b[j]); end; for i:=1 to n do begin; for j:=0 to 8 do if (b[j]>1) and (a[i]=j) then a[i]:=9; if a[i]<>9 then begin; inc(c); ar[c]:=a[i]; end; end; writeln; for i:=0 to 8 do writeln(i,'=',b[i]); writeln; writeln('Final array:'); for i:=1 to n do if a[i]=9 then a[i]:=0;
for i:=1 to c do begin; a[i]:=ar[i]; write(a[i]:4); end; end.
Будем выполнять деление числа на основание той системы, в которую будем переводить. Причем, деление с остатком делаем. А частное опять также делим и т.д пока в частном ноль не получим: 37=2*18+1 18=2*9+0 9=2*4+1 4=2*2+0 2=2*1+0 1=2*0+1 А теперь остатки снизу вверх переписываем, это и будет число в требуемой системе 37(10) = 100101(2) Проверка. В числе 100101 нумеруем разряды, начиная с 0, но идем справа налево: число:100101 разряд: 543210 Номер разряда означает показатель основания. Составляем выражение:
const n=5;
var a:array[1..n] of integer;
b:array[0..8] of integer;
ar:array[1..n] of integer;
i,c,j:integer;
begin
randomize;
writeln('Array:');
for i:=1 to n do
begin
a[i]:=random(8);
write(a[i]:4);
end;
for i:=1 to n do
begin;
for j:=0 to 8 do
if a[i]=j then inc(b[j]);
end;
for i:=1 to n do
begin;
for j:=0 to 8 do
if (b[j]>1) and (a[i]=j) then a[i]:=9;
if a[i]<>9 then
begin;
inc(c);
ar[c]:=a[i];
end;
end;
writeln;
for i:=0 to 8 do writeln(i,'=',b[i]);
writeln;
writeln('Final array:');
for i:=1 to n do
if a[i]=9 then a[i]:=0;
for i:=1 to c do
begin;
a[i]:=ar[i];
write(a[i]:4);
end;
end.
37=2*18+1
18=2*9+0
9=2*4+1
4=2*2+0
2=2*1+0
1=2*0+1
А теперь остатки снизу вверх переписываем, это и будет число в требуемой системе
37(10) = 100101(2)
Проверка. В числе 100101 нумеруем разряды, начиная с 0, но идем справа налево:
число:100101
разряд: 543210
Номер разряда означает показатель основания. Составляем выражение:
ответ сошелся.
-----------------------------
Действуем аналогично:
94=2*47+0
47=2*23+1
23=2*11+1
11=2*5+1
5=2*2+1
2=2*1+0
1=2*0+1
Проверка:
1011110
6543210
Сошлось
----------------------------------------
64=8*8+0
8=8*1+0
1=8*0+1
Проверка:
100
210
Сошлось