Вложенные циклы

Для решения задачи достаточно часто требуется использовать две и более циклические конструкции, одна из которых расположена внутри другой (других). Такие конструкции называют вложенными циклами. Какие именно циклы при этом используются, роли не играет, они могут быть организованы посредством любых рассмотренных ранее операторов (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)

Одномерные массивы

Работа с элементами

Одномерный массив - это фиксированное количество элементов одного типа, объединенных одним именем. Каждый элемент имеет свой номер- индекс. Обращение к элементам массива осуществляется с помощью указания имени массива и номера элементов.

Пусть для решения требуется массив из 30 целых чисел.

Var mas: array [1..30] of integer;

Способы задания значений

Элементов массива

Оператор присваивания.

А[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 до Х}

Заполнение по формуле.

Каждый элемент массива должен быть рассчитан по формуле (например ai=sin i - cos i)

for i:=1 to 10 do

a[i]:=sin(i)-cos(i);

Вывод массива.

For i:=1 to 10 do writeln(a[i]);

Вывод пятого элемента массива записывается так: write(a[5]);

Алгоритмы работы с массивами

Сумма элементов массива.

Program symma;

var a: array [1..10] of integer;

i, s: integer;

begin

s:=0;

for i:=1 to 10 do

begin

readln(a[i]);

s:=s+a[i];

end;

writeln (‘Сумма= ’,s);

еnd.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: