|
Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Операторы управления
Задача 3.20. Поступает последовательность из
вещественных чисел. Определить наибольший элемент последовательности.
Входные данные:
— целое число;
— вещественное число, определяет текущий элемент последовательности.
Выходные данные:
— вещественное число, элемент последовательности с наибольшим значением.
Промежуточные переменные:
— параметр цикла, номер вводимого элемента последовательности.
Алгоритм поиска наибольшего элемента в последовательности следующий (рис. 3.31). Вводится
— количество элементов последовательности и
— первый элемент последовательности. В памяти компьютера отводится ячейка, например с именем
, в которой будет храниться наибольший элемент последовательности — максимум. Далее предполагаем, что первый элемент последовательности наибольший и записываем его в
. Затем вводим второй элемент последовательности и сравниваем его с предполагаемым максимумом. Если окажется, что второй элемент больше, его записывают в ячейку
. В противном случае никаких действий не предпринимаем. Потом переходим к вводу следующего элемента последовательности (
), и алгоритм повторяется с начала. В результате в ячейке
сохранится элемент последовательности с наибольшим значением9Для поиска наименьшего элемента последовательности (минимума), предполагают, что первый элемент — наименьший, записывают его в ячейку min, а затем среди элементов после-довательности ищут число, значение которого будет меньше чем предполагаемый минимум..
Текст программы на С++:
#include <iostream>
using namespace std;
int main ( )
{
unsigned int i,N;
float X,Max;
cout<<" N = "; cin>>N;
cout<<" X = "; cin>>X; //Ввод первого элемента последовательности
//Параметр цикла принимает стартовое значение i =2, т.к. первый элемент
//уже введён предположим, что он максимальный, т.е. Max=X.
for ( i =2, Max=X; i<=N; i++)
{
cout<<" X = "; cin>>X; //Ввод следующих элементов последовательности.
//Если найдётся элемент, превышающий максимум, записать его в ячейку Max,
//теперь он предполагаемый максимум.
if (X>Max) Max=X;
}
//Вывод наибольшего элемента последовательности.
cout<<" Max = "<<Max<<" \n ";
return 0;
}
Задача 3.21. Вводится последовательность целых чисел, 0 — конец последовательности. Найти наименьшее число среди положительных, если таких значений несколько10Предположим вводится последовательность чисел 11, -3, 5, 12, -7, 5, 8,-9, 7, -6, 10, 5, 0. Наименьшим положительным числом является 5. Таких минимумов в последовательности 3., определить, сколько их.
Блок-схема решения задачи приведена на рис. 3.32.
Далее приведён текст подпрограммы с подробными комментариями11Алгоритм поиска максимального (минимального) элементов последовательности подробно описан в задаче 3.20.
#include <iostream>
using namespace std;
int main ( )
{
float N, Min; int K;
//Предположим, что в последовательности нет положительных чисел, K=0.
//Вводим число и если оно не равно нулю
for ( cout<<" N = ", cin>>N,K=0;N!=0; cout<<" N = ", cin>>N)
//проверяем является ли оно положительным.
if (N>0)
//если K=0, поступил 1-й положительный элемент, предположим, что он минимальный.
if (K==0) {K=1;Min=N; }
//если элемент не первый, сравниваем его с предполагаемым минимумом,
//если элемент меньше, записываем его в Min и сбрасываем счётчик
else if (N<Min) {Min=N;K=1;}
//если элемент равен минимуму, увеличиваем значение счётчика.
else if (N==Min) K++; //Конец цикла
//Если значение счётчика не равно нулю, печатаем значение
//минимального элемента и количество таких элементов.
if (K!=0) cout<<" Min = "<<Min<<" \n "<<" K = "<<K<<" \n ";
//в противном случае выдаём сообщаем.
else cout<<"В последовательности нет положительных элементов \n ";
return 0;
}

