Для любознательных
Рассмотрим решение таких задач, в которых требуется выполнить группу операторов определенное количество раз.
Задача. Дано 10 вещественных чисел. Найти величину наибольшего из них.
Program Maximum;
Uses
Crt;
Label
Metka1;
Var
Kolich : integer;
Max,
x : real;
Begin
ClrScr;
Kolich:=0;
Max:=-32768;
Metka1 : write (‘Введите число ‘);
readln (x);
if x>Max
then
Max:=x;
Kolich:=Kolich+1;
if Kolich<10
then
goto Metka1;
writeln (‘Наибольшее число равно ‘,x);
readln;
End.
Рассмотрим подробнее действие операторов. После очистки экрана (ClrScr) мы присвоим переменной Kolich, которая определена для подсчета введенных чисел, первоначальное значение равное нулю. Переменной Мах мы будем присваивать наибольшее значение из вводимых чисел. Так как переменная Мах типа integer, то присвоим ей первоначальное значение равное наименьшему из диапазона этого типа, т. е. числу -32768. Далее выделен целый блок. Он будет повторяться при запуске программы 10 раз, т.е. столько сколько чисел нам нужно запросить у пользователя и исследовать их. Просмотрим действие этого блока. Сначала мы запрашиваем у пользователя первое число и считываем его в переменную х. Затем идет анализ этого числа. Если введенное число х оказалось больше числа, находящегося в переменной Мах, то происходит пере присваивание: переменной Мах присваиваем значение х. Итак, считано одно число, поэтому счетчик введенных чисел (Kolich) увеличиваем на 1. Проверяем условным оператором, может быть уже достаточно введено и проанализировано чисел? Если Kolich меньше 10, то еще недостаточно, а значит надо вернуться для того чтобы снова запросить и проанализировать следующее число, что и выполнено с помощью оператора goto. Этот оператор не пропустит нас дальше выполнять программу пока не выполниться условие, при котором переменная Kolich будет равна 10. А такой момент обязательно наступит, потому что в результате выполнения блока переменная Kolich увеличивается на 1. В результате выделенный блок повториться 10 раз, будет запрошено 10 чисел и среди них постоянным сравнением с предыдущим числом будет выявлено наибольшее, которое будет содержаться в переменной Мах. После выхода из блока останется только вывести это число на экран.
Задание. Решите подобную задачу с использованием выше описанного метода.
1) Дано n вещественных чисел. Определить, сколько среди них отрицательных.
2) Дано n вещественных чисел. Определить, сколько среди них положительных чисел.
3) Дано n вещественных чисел. Найти их сумму.
4) Дано n вещественных чисел. Найти их среднее арифметическое.
5) Дано n вещественных чисел. Определить сумму чисел, стоящих на четных местах в этой последовательности.
6) Дано n вещественных чисел. Определить сумму положительных чисел.
7) Дано n вещественных чисел. Определить сумму отрицательных чисел.
8*) Дано целое k от 1 до 180. Определить, какая цифра находится в k-ой позиции последовательности
10111213...9899,
в которой выписаны подряд все двузначные числа.
9*) Дано натуральное k. Определить k-ую цифру в последовательности
110100100010000...,
в которой выписаны подряд степени 10.
10*) Вычислить с – наибольший общий делитель натуральных чисел а и b.
Приготовьте файлы и листинги с решенными задачами, а также проверьте, все ли задания выполнены в тетради.
Дата добавления: 2015-05-16; просмотров: 811;