почему программу вычисления кол-ва трехзначных чисел, у которых цифры упорядочены по возрастанию нельзя решить так?
var i,z,x: integer;
begin
for i:=100 to 999 do
z:=i div 10;
x:=i mod 10;
if z mod 10 = z div 10 + 1 then
if x = z mod 10 + 1 then
writeln(i);
end.

  • Потому что "упорядочены по возрастанию" - это не значит, что они отличаются строго на 1.
    Это значит, что 1-я цифра меньше 2-й, а 2-я меньше 3-й.
    Например, числа 137, 269, 358 и т. д.
    А у Вас учтены только такие числа, где цифры идут подряд - например, 123, 678...
    Вам нужно заменить проверки "z mod 10 = z div 10 + 1" и "x = z mod 10 + 1" на сравнения z mod 10 > z div 10 и x > z mod 10, только я не помню, как это записать на языке программирования (разобрать Вашу программу смогла, а вот добавить что-то уже не в силах) .

    Да, ещё: если задача именно в подсчёте количества таких чисел, а не в их перечислении, то, наверное, нужно ввести "счётчик", который изначально равен 0, а при обнаружении каждого такого числа увеличивается на 1. Тогда на выходе мы получим искомое количество.