Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование для начинающих 2011-09-02.pdf
Скачиваний:
45
Добавлен:
09.06.2015
Размер:
576.39 Кб
Скачать

8. Переменная – счетчик событий

8.1. Переменные – счетчики

Часто требуется подсчитать, сколько раз во время вычислений наступает то или иное событие (выполняется то или иное условие). Для этого вводится вспомогательная переменная, которой в начале присваивается нулевое значение, а после каждого наступления события она увеличивается на единицу.

Пример 1. Пользователь вводит 10 чисел. Определить, сколько из них являются одновременно четными и положительными.

Counter := 0;

{Обнуляем переменную-счетчик}

for i:=1 to 10 do

 

begin

 

readln(x);

 

if (x mod 2 = 0)and(x>0) then

Counter := Counter + 1; {При выполнении условия увеличиваем на 1}

end; writeln(Counter);

Пример 2: Пользователь вводит 10 чисел. Проверить, упорядочены ли они по возрастанию.

Эту задачу мы решали в разделе, посвященном переменным флагам, с помощью логической переменой. Решим ее теперь с помощью счетчика. Последовательность будет упорядочена, если нет ситуаций, когда последующее число меньше предыдущего. Подсчитаем количество таких ситуаций, и если оно окажется нулевым, то последовательность упорядочена.

Counter := 0; readln(x);

for i := 2 to 10 do begin

x2 := x; readln(x);

if x2 > x then Counter : =Counter + 1; end;

if Counter = 0 then writeln('Последовательность упорядочена')

else

writeln('Последовательность не упорядочена');

Пример 3. Вычисление площади сложных фигур методом Монте-Карло. Метод Монте-Карло позволяет приближенно подсчитать площадь

произвольной плоской фигуры. Для этого плоскую фигуру следует поместить внутрь простой, площадь которой легко подсчитать (например, внутрь квадрата).

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

Рассчитаем таким способом площадь под кривой графика

y =sin x (см. рис.) в диапазоне от 0 до π .

N := 1000; {Общее количество точек} C := 0; {Инициализируем счетчик}

for i := 1 to N do begin

{Генерируем случайные координаты точки внутри прямоугольника} x := Pi * random;

y := random;

{В случае попадания в область под кривой увеличиваем счетчик} if y < sin(x) then C := C + 1;

end;

{Подсчитываем площадь фигуры} S := Pi * C / N;

writeln(S);

Задание 8. Переменная – счетчик событий

1.Создайте программу, запрашивающую у пользователя 10 чисел. Если больше 4-х из них окажутся больше 10, выведите сообщение «Караул! Сейчас все взорвется». Иначе сообщите, сколько введенных чисел больше 10, а сколько больше 5.

2.Напишите программу, которая генерирует n случайных чисел, которые могут принимать значения в диапазоне [-1; 2] и подсчитывает, сколько среди них отрицательных.

3.С помощью метода Монте-Карло получите приближенное значение числа

π. Для этого подсчитайте площадь окружности единичного радиуса.

4.Напишите программу для подсчета числа точек с целочисленными координатами, находящихся внутри круга с центром в начале координат и радиусом 1000.