Глава 3. Операторы управления
Задача 3.21.
Вводится последовательность целых чисел, 0 — конец последова-
тельности. Найти наименьшее число среди положительных, если таких значений
несколько
10
, определить, сколько их.
Блок-схема решения задачи приведена на рис. 3.32.
Рис. 3.32: Алгоритм поиска минимального положительного числа в последова-
тельности.
Далее приведён текст подпрограммы с подробными комментариями
11
.
#include
using namespace s t d ;
i n t main ( )
{
f l o a t N, Min ; i n t K;
//Предположим, что в последовательности нет положительных чисел , K=0.
//Вводим число и если оно не равно нулю
f o r ( cout<<" N = " , c i n >>N,K=0;N! = 0 ; cout<<" N = " , c i n >>N)
//проверяем является ли оно положительным.
i f (N>0)
//если K=0, поступил 1-й положительный элемент, предположим, что он минимальный.
i f (K==0) {K=1;Min=N; }
//если элемент не первый, сравниваем его с предполагаемым минимумом,
//если элемент меньше, записываем его в Min и сбрасываем счётчик
e l s e i f (N10
Предположим вводится последовательность чисел 11, -3, 5, 12, -7, 5, 8,-9, 7, -6, 10, 5, 0.
Наименьшим положительным числом является 5. Таких минимумов в последовательности 3.
11
Алгоритм поиска максимального (минимального) элементов последовательности подробно
описан в задаче 3.20
Программирование на языке С++ в среде Qt Creator
3.5. Решение задач с использованием циклов
83
//если элемент равен минимуму, увеличиваем значение счётчика.
e l s e i f (N==Min ) K++; //Конец цикла
//Если значение счётчика не равно нулю, печатаем значение
//минимального элемента и количество таких элементов.
i f (K!=0) cout<<" M i n = "<//в противном случае выдаём сообщаем.
e l s e cout<<"В последовательности нет положительных элементов \ n " ;
return 0 ;
}
Задача 3.22.
Определить, сколько раз последовательность из N произвольных
чисел меняет знак.
Чтобы решить задачу, нужно попарно перемножать элементы последователь-
ности. Если результат произведения пары чисел — отрицательное число, значит,
эти числа имеют разные знаки.
Пусть в переменной B хранится текущий элемент последовательности, в A —
предыдущий. Введём первое число A (до цикла) и второе B (в цикле). Если их
произведение отрицательно, то увеличиваем количество смен знака на 1 (k++).
После чего сохраняем значение B в переменную A и повторяем цикл (рис. 3.33).
Рис. 3.33: Алгоритм решения задачи 3.22.
Предлагаем читателю самостоятельно разобраться с текстом программы на
С++
:
#include
using namespace s t d ;
i n t main ( )
{
f l o a t A, B ; i n t i , K,N;
cout<<" N = " ; c i n >>N;
f o r (K=0 , cout<<" A = " , c i n >>A, i =2; i <=N; i ++)
{
cout<<" B = " ; c i n >>B ;
i f (A∗B<0) K++;
A=B ;
}
cout<<" K = "<return 0 ;
}
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
84
Do'stlaringiz bilan baham: |