Вложенные циклы Старинная задача. Сколько можно купить быков, коров и телят, при условии, что плата за быка 10 рублей, за корову – 5 рублей, за теленка – полтинник (0,5 руб.). На 100 рублей надо купить 100 голов скота.
Решение. Обозначим через b - количество быков; k - количество коров; t - количество телят. После этого можно записать два уравнения: 10b + 5k + 0,5t = 100 и b + k + t = 100.
Преобразуем их: 20b + 10k + t = 200 и b + k + t = 100 По условию задачи на 100 рублей можно купить: не более 10 быков, т. е. 0 < b < 10, не более 20 коров, т. е. 0 < k < 20, не более 200 телят, т. е. 0 < t < 200.
Таким образом, получаем: program old_task; var b, k, t : integer; begin for b := 0 to 10 do for k := 0 to 20 do for t := 0 to 200 do If (20*b+10*k+t=200) and (b+k+t=100) then writeln ('Быков ',b,' коров ',k,' телят ',t); end. Результат: Быков 1 коров 9 телят 90
Сколько раз будет проверяться условие в данной программе (оператор If)? Значение переменной b изменяется 11 раз (от 0 до 10), для каждого ее значения переменная k изменяется 21 раз, а для каждого значения переменной k переменная t изменяется 201раз. Таким образом, условие будет проверяться = раз.
Но если известно количество быков и коров, то количество телят можно вычислить по формуле t = (b + k) и цикл по переменной t исключается. program old_task; var b, k, t : integer; begin for b := 0 to 10 do for k := 0 to 20 do begin t := 100 – (b+k); If (20*b+10*k+t=200) then writeln ('Быков ',b,' коров ',k,' телят ',t); end; end.
Вывести на экран целые числа в следующем виде:
program cikl_v_cikle; var i, j, n : integer; begin readln (n); for i := 1 to n do begin for j := 1 to i do write (n, ' '); writeln; end; end.
program tabl_Pifagor; var i,j:integer; begin write (' ':4); for j:=1 to 10 do write(j:4); writeln; for i:=1 to 10 do begin write(i:4); for j:=1 to 10 do write(i*j:4); writeln; end; end.