Три ошибки, одна грубая.
Сравни своё решение и моё. (для Pascal ABC Net)
program prim; var a: array [1..10] of integer; i, z, max, min,nommax,nommin: integer; begin for i:=1 to 10 do a[i]:=Random(101); writeln (' исходный массив:'); for i:=1 to 10 do write (a[i], ' '); writeln; max:= a[1]; for i:=2 to 10 do if a[i]>max then begin max:= a[i];nommax:=i; end; writeln ('максимальный элемент=', max); min:= a[1]; for i:=2 to 10 do if a[i]<min then begin min:= a[i];nommin:=i; end; writeln ('минимальный элемент=', min); z:=a[nommin]; a[nommin]:=a[nommax]; a[nommax]:=z; writeln (' полученный массив'); for i:=1 to 10 do write (a[i], ' '); writeln; end.
Ввод(ЧИСЛО)
Цикл пока ЧИСЛО>0
Вывод(ОстатокОтДеления(ЧИСЛО / 10))
Число = Число / 10
КонецЦикла
Если нет стандарной операции остаток от деления можно посчитать как
ЧИСЛО - ((ЧИСЛО / 10)*10)
В таких заданиях главное начинать с конца, то есть с последней операции, после которой следует выход.
Рассмотрим задание 48. В конце у нас логическая схема конъюнктора, принимающая значение A и дизъюнктор, который в свою очередь принимает B и C. Запишем:
f₁ = A && f₂₁
f₂₁ = B || C
f = f₁ = A && (B || C)
Рассмотрим задание 49. Действуем по аналогии. В конце имеем конъюктор, принимающий на себя инвертор, который в свою очередь принимает значение B (и меняет его на противоположный), а также дизъюнктор, который в свою очередь принимает значение A и конъюктор, который в свою очередь принимает инвертор, принимающий значение A, а также значение B. Повторов много, но без них попросту не обойтись. Запишем:
f₁ = f₂₁ && f₂₂
f₂₁ = A || f₃₁
f₃₁ = f₄₁ && B
f₄₁ = ¬A
f₂₂ = ¬B
f = f₁ = (A || (¬A && B)) && ¬B