Опубликован: 07.03.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 3:

Операторы управления

Задача 3.20. Поступает последовательность из N вещественных чисел. Определить наибольший элемент последовательности.

Входные данные: N — целое число; X — вещественное число, определяет текущий элемент последовательности.

Выходные данные: Max — вещественное число, элемент последовательности с наибольшим значением.

Промежуточные переменные: i — параметр цикла, номер вводимого элемента последовательности.

Алгоритм поиска наибольшего элемента в последовательности следующий (рис. 3.31). Вводится N — количество элементов последовательности и X — первый элемент последовательности. В памяти компьютера отводится ячейка, например с именем Max, в которой будет храниться наибольший элемент последовательности — максимум. Далее предполагаем, что первый элемент последовательности наибольший и записываем его в Max. Затем вводим второй элемент последовательности и сравниваем его с предполагаемым максимумом. Если окажется, что второй элемент больше, его записывают в ячейку Max. В противном случае никаких действий не предпринимаем. Потом переходим к вводу следующего элемента последовательности (X), и алгоритм повторяется с начала. В результате в ячейке Max сохранится элемент последовательности с наибольшим значением9Для поиска наименьшего элемента последовательности (минимума), предполагают, что первый элемент — наименьший, записывают его в ячейку min, а затем среди элементов после-довательности ищут число, значение которого будет меньше чем предполагаемый минимум..

Алгоритм поиска наибольшего числа в последовательности.

Рис. 3.31. Алгоритм поиска наибольшего числа в последовательности.

Текст программы на С++:

#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.

Алгоритм поиска минимального положительного числа в последовательности.

Рис. 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;
}
		
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?