Вложенные циклы
Для решения задачи достаточно часто требуется использовать две и более циклические конструкции, одна из которых расположена внутри другой (других). Такие конструкции называют вложенными циклами. Какие именно циклы при этом используются, роли не играет, они могут быть организованы посредством любых рассмотренных ранее операторов (For, While, Repeat... Until).
Задача: Сколько можно купить быков, коров и телят, если бык стоит 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 skot;
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.
Условие будет проверятся 11*21*201=46431 раз. Но задачу можно сократить на один цикл если количество телят вычислять по формуле:
t=100-(b+k)
Массивы.
Массив – это упорядоченный набор однотипных элементов, имеющих общее имя.
Объявление массива.
Перед использованием массив, как и любая переменная, должен быть объявлен в разделе объявления переменных. В общем виде объявление массива выглядит так:
имя: array [нижний_индекс..верхний_индекс] of тип;
где
имя – имя переменной – массива.
array – ключевое слово, обозначающее, что переменная является массивом;
нижний_индекс и верхний_индекс – целые числа, определяющие диапазон изменения индексов (номеров) элементов массива и, неявно, количество элементов (размер) массива;
тип – тип элементов массива.
Примеры объявления массивов:
t: array[1..31] of real;
k: array[0..2] of integer;
n: array[1..30] of longint;
Чтобы в программе использовать элемент массива, надо указать имя массива и номер элемента (индекс), заключив его в квадратные скобки. индекс может быть константой или выражением целого типа.
Например: t[1]:=1.22;
d:=k[1]*k[1]-4*k[2]*k[1];
readln (n[i+1]);
writeln (t[m]);
Оператор присваивания.
А[1]:=3;
А[2]:=4;
........
или
B[1]:=’Иванов’;
B[2]:=’Петров’;
........
Такой способ задания значений используется, если массив небольшой.
Оператором ввода с клавиатуры.
For i:=1 to 10 do
begin
Writeln(‘введите ’,i,’-ый элемент массива’);
Readln(a[i]);
{в качестве индекса используется параметр цикла }
end;
Этот способ задания значений также используется для небольших массивов.
Заполнение массива с использованием генератора случайных чисел.
.......
RANDOMIZE;
For i:=1 to 10 do
a[i]:=Random(x);
…....
{массив заполнится целыми числами в диапазоне от 0 до Х}






