Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Продолжим изучение цикла с предусловием на примере решения следующей задачи.
Задача. Найти сумму чисел в непустой последовательности.
Рассмотрим алгоритм решения. Пусть нам дана такая последовательность чисел:
3, -4, 0, 5, 19, -20, 6, 2
Для работы нам нужно организовать обращение к каждому элементу последовательности.
Нетрудно догадаться, что это будет происходить через порядковый номер каждого члена последовательности. Пронумеруем эти числа:
1 2 3 4 5 6 7 8
3, -4, 0, 5, 19, -20, 6, 2
Получилось, что всего у нас чисел восемь, на первом месте стоит число 3, на втором - число (-4), на третьем - число 0 и т.д. Тогда переменная цикла i будет пробегать числа от 1 до 8, становясь на каждом шаге больше на 1 и запрашивая каждый раз очередное число. Поэтому общая схема цикла будет выглядеть так:
i:=1; while i<=N do begin write (‘Введите ‘,i,’-ое число’); readln (x);... i:=i+1; end; |
Здесь N - количество чисел последовательности (в нашем случае 8), х - член последовательности, i - порядковый номер очередного члена последовательности. Просмотрим, как будет работать этот цикл.
1 шаг
i:=1; while i<=N do {Проверяется условие 1<=8? Да. Значит выполняем тело цикла} begin write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 1-ое число”} readln (x); {Считываем число 3 в переменную х}... i:=i+1; {Переходим к следующему по порядку числу: i=2} end; |
2 шаг
i:=1; while i<=N do {Проверяется условие 2<=8? Да. Значит выполняем тело цикла} begin write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 2-ое число”} readln (x); {Считываем число (-4) в переменную х}... i:=i+1; {Переходим к следующему по порядку числу: i=3} end; |
3 шаг
i:=1; while i<=N do {Проверяется условие 3<=8? Да. Значит выполняем тело цикла} begin write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 3-ое число”} readln (x); {Считываем число 0 в переменную х}... i:=i+1; {Переходим к следующему по порядку числу: i=4} end; |
и т. д.
8 шаг
i:=1; while i<=N do {Проверяется условие 8<=8? Да. Значит выполняем тело цикла} begin write (‘Введите ‘,i,’-ое число’);{Вывод на экран “Введите 8-ое число”} readln (x); {Считываем число 2 в переменную х}... i:=i+1; {Переходим к следующему по порядку числу: i=9} end; |
9 шаг
i:=1; while i<=N do {Проверяется условие 9<=8? Нет. Значит цикл закончил свою работу и компьютер переходит к обработке следующего за end оператора} |
Итак, у нас уже организован цикл считывания чисел. Осталось только вписать в тело цикла оператор, который бы суммировал все эти числа. Для этого опишем переменную Summa в разделе описания переменных и присвоим ей нулевое значение перед выполнением цикла. Тогда при каждом шаге нашего цикла значение этой переменной должно быть изменено на х. Это произойдет при выполнении оператора
Summa:=Summa+x;
Если Вам не совсем понятно, что происходит при выполнении этого оператора, Вам нужно вспомнить, как происходит присваивание значение переменной: сначала вычисляется значение выражения в правой части (в нашем случае Summa+x, т.е, значение переменной Summa увеличиваем на х), а затем присваиваем это значение переменной с именем, записанным в левой части (Summa). Таким образом, в переменной Summa собирается сумма всех считанных чисел.
Задание. Напишите полный текст программы, находящей сумму N чисел последовательности. Дополните программу нахождением среднего арифметического этих чисел.
Примечание. Средним арифметическим чисел называется сумма этих чисел, деленная на их количество.
Дата публикования: 2015-01-25; Прочитано: 367 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!