ну смотри переменная m в начале равна 10
затем идет цикл а именно: нужно повторить какоето действие с 1 до 10 раз(тоесть 10 раз) Это действие включает в себя условие если Dat[k] <m (Dat[k] где к это каждый шаг цикла: если к=1 то Dat[k]=Dat[1] а это равно 7 и так далее, к=2 к=3 до 10)так вот каждый раз подставляется новое число и сравнивается с m (m тоже число в начале которое равно 10), вот шаг
1) при k=1, если 7 меньше 10 то m теперь будет равно 7
2)при k=2 (тоесть Dat[2]) если 9 меньше 7, не меньше а значит m остаётся без изменений m=7
3)при k=3 (тоесть Dat[3]) если 10 меньше 7, не меньше а значит m остаётся без изменений m=7
4)при k=4 (тоесть Dat[4]) если 5 меньше 7, то m=5
5)при k=5 (тоесть Dat[5]) если 6 меньше 5, не меньше а значит m остаётся без изменений m=5
6)при k=6 (тоесть Dat[6]) если 7 меньше 5, не меньше а значит m остаётся без изменений m=5
7)при k=7 (тоесть Dat[7]) если 9 меньше 5, не меньше а значит m остаётся без изменений m=5
8)при k=8 (тоесть Dat[8]) если 8 меньше 5, не меньше а значит m остаётся без изменений m=5
9)при k=9 (тоесть Dat[9]) если 6 меньше 5, не меньше а значит m остаётся без изменений m=5
10)при k=10 (тоесть Dat[10]) если 9 меньше 5, не меньше а значит m остаётся без изменений m=5
В конце идет вывод числа переменной m, которая равна 5, а значит будет выведено 5
Показано самое простое решение, ибо на более сложные манипуляции не могу тратить время, некоторые моменты прокомментированны.
Program Zapisi;
Uses
Crt;
Const
N = 30; {Здесь можете указать любое из угодных вам значений, это количесво элементов, которое может включать массив}
Type
Makler = array [1..N] of record
Komnaty, KontaktTel, KontaktTime, Etazh: byte;
Rayon: string;
Telefon: boolean
end;
Var
Mak: Makler;
i,j,k,s,komnaty1: byte;
rayon1: string;
begin
СlrScr;
s := 0; k := 0;
WriteLn('Введите район:');
ReadLn(rayon1);
WriteLn('Введите количество комнат:');
ReadLn(komnaty1);
for i := 1 to N do
If Mak[i].Rayon = rayon1 then
{В данном случае используется самая банальная проверка слов на соответствие, так как регистр в данном случае имеет значение и любой лишний пробел нарушит соответствие, лучше, конечно же, было бы сделать посимвольную проверку с применением функции UpCase, дабы опустить регистр, но, как я сказал выше, времени не хватает.}
k := k + 0;
for j := 1 to N do
If Mak[j].Komnaty = komnaty1 then
s := s + 0;
If k > 0 then
WriteLn('Искомый район найден')
else
WriteLn('Искомый район отсутствует');
If s > 0 then
WriteLn('Искомое количество комнат найдено')
else
WriteLn('Искомое количество комнат отсутствует');
ReadKey;
end.