понеділок, 17 листопада 2014 р.

Вкладені цикли мовою Paѕcal

Вкладені цикли мовою Paѕcal

Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина «пробігає» усі свої значення.

У деяких випадках важливо повторити підзадачу кілька разів усередині більш загальної задачі. Один зі способів написання такої програми - включити цикл у набір інструкцій, що повторюються всередині іншого циклу. Така структура, що складається з циклу в циклі, називається вкладеними циклами.
Вкладення циклів використовується зокрема при розв'язуванні таких задач:
·       задачі на перебір варіантів;
·       табулювання функцій;
·       обробка двовимірних масивів.
Якщо в програмі використовуються вкладені цикли, то для підвищення наочності програмного коду прийнято кожний наступний рівень вкладання зміщувати відносно попереднього.
Правило вкладення циклів: внутрішній цикл цілком укладається в тіло зовнішнього циклу.
Приклад № 1. Обчислити значення змінної  y=3k+ n при всіх значеннях змінних N=1, 2, 3, 4  і K=3, 8, 13, 18, 23.
Розв′язання.
Якщо перебирати всі значення N і K, ми повинні отримати 4*5=20 значень змінної y =f(n, k)= 3k + n.
Скласти програму можна в такий спосіб: для кожного значення N перебрати всі значення К від 3 до 23 з кроком  5, тобто N використати як параметр зовнішнього циклу, К - як параметр внутрішнього циклу.
Текст програми:
Program priklad_1;
var n, k, y:integer;
begin
for n:=1 to 3 do   begin
k:=2;
while k<=23 do   begin
y:=3*k+n;
writeln(n=  ', n:3, '  k=  ',  k:3, ' 3k + n =  ' , y:3);
k:=k+5;
end;  end; end.

Параметр N змінюється з кроком 1, тому зовнішній цикл організований з використанням оператора For; параметр К змінюється з кроком 5, тому внутрішній цикл є циклом While.

Вкладені цикли мовою Paѕcal

Приклад № 2. Старовинна задача. Скільки можна купити биків, корів та телят, якщо вартість одного бика - 10 тис. грн, однієї корови - 5  тис. грн, а за одного теля платять 0,5 тис. грн. І якщо на 100 тис. рублів потрібно купити 100 голів скоту.
Розв'язування:
Позначимо через b - кількість биків; k - кількість корів; t - кількість телят. Після цього можна записати два рівняння:
10b + 5k + 0.5t = 100       і          b + k + t = 100
На 100 рублів можна купити:
·       не більше 10 биків, тобто 0<=b<=10;
·       не більше 20 корів, тобто 0<=k<=20;
·       не більше 200 телят, тобто 0<=t<=200.
Отже отримуємо текст програми:
Program Priklad_2;
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 (10*b + 5*k + 0.5*t = 100) and (b + k + t = 100)  then
writeln('Биків - ', b, ';  корів - ', k,';   телят - ',t);
end.

Завдання для самостійної роботи.
1.1.        Обчислити значення змінної  y=5k-4n при всіх значеннях змінних N=1, 2, 3, 4  і K=2, 8, 14, 20, 26.
1.2.     Скільки може бабуся купити на пенсію 1280 грн  індюків , курей та  гусей, якщо вартість одного індюка - 75 грн, однієї курки - 55 грн, а за одного гуся платять 65 гривень. І якщо  їй  потрібно купити лишe 20 голів.
1.3.   Обчислити значення змінної  y=7k-3n при всіх значеннях змінних N=1, 2, 3, 4  і K=1, 8, 15, 22, 29.

1.4.     Скільки може бабуся купити на пенсію 1580 грн  індюків , курей та  гусей, якщо вартість одного індюка - 75 грн, однієї курки - 55 грн, а за одного гуся платять 65 гривень. І якщо  їй  потрібно купити лишe 20 голів.

Немає коментарів:

Дописати коментар