Var x: integer; begin x:= 1000; while x>0 do begin write (x, '-7='); x:= x-7 writeln(x); delay(50); end; end. Встречено 'writeln', а ожидалось ';' , как пофиксить
Удобнее всего решать с использованием промежуточной двоичной системы, поскольку 16=2⁴, в 8=2³. В силу этого каждая шестнадцатиричная цифра изображается четырьмя битами (тетрадой), а каждая восьмеричная - тремя (триадой). Заменим неизвестные биты символом Х. 1010₁₆ = ХХХ ХХ1 010₈ Запишем изображения битов друг под другом с учетом известной нам информации. Х Х Х Х 1 0 1 0 Х Х Х Х Х 1 0 1 0 Теперь известные биты в конце чисел можно отбросить Х Х Х Х Х Х Х Х Х Очевидно, во втором (восьмеричном числе первый бит нулевой, поскольку оба числа в двоичной записи одинаковы и остается только ₂. Эти четыре бита (обозначим их IJKL) могут дать 16 комбинаций. Но требование, чтобы восьмеричное число имело три цифры, старшая из которых не может быть нулем, запрещает комбинацию IJ=00, поэтому 4 комбинации из 16 надо вычеркнуть. Останется 12.
1. Забыли ; перед Writeln(x);
2. Забыли подключить модуль CRT.
-----------------------------------------------------------
Program ;
Uses CRT;
Var x: integer;
Begin
x:= 1000;
While x > 0 do begin
Write (x,'-7:= ');
x:= x - 7;
Writeln(x);
Delay(50);
end;
end.
-----------------------------------------------------------
Фрагмент программы (рисунок).
-----------------------------------------------------------