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

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

Задача 3.12. Вычислить факториал числа N ( N! = 1 · 2 · 3 · ... · N).

Входные данные: N — целое число, факториал которого необходимо вычислить.

Выходные данные: factorial — целое число, значение факториала числа N, произведение чисел от 1 до N.

Промежуточные переменные: i — параметр цикла, целочисленная переменная, последовательно принимающая значения 2, 3, 4 и так далее до N.

Блок-схема приведена на рис. 3.26.

Итак, вводится число N. Переменной factorial, предназначенной для хранения значения произведения последовательности чисел, присваивается начальное значение, равное единице. Затем организуется цикл, параметром которого выступает переменная i. Если значение параметра цикла не превышает N, то выполняется оператор тела цикла, в котором из участка памяти с именем factorial считывается предыдущее значение произведения, умножается на текущее значение параметра цикла, а результат снова помещается в участок памяти с именем factorial. Когда параметр i превысит N, цикл заканчивается, и на экран выводится значение переменой factorial, которая была вычислена в теле цикла.

Алгоритм вычисления факториала.

Рис. 3.26. Алгоритм вычисления факториала.

Обратите внимание, как в программе записан оператор цикла. Здесь операторы ввода и операторы присваивания стартовых значений записаны как начальные присваивания цикла for, а оператор накапливания произведения и оператор модификации параметра цикла представляют собой последействие:

#include <iostream>
using namespace std;
int main ( )
{
	unsigned long long int factorial; 
	unsigned int N, i;
	for ( cout<<" N = ", cin >>N, factorial =1, i =2; i<=N; factorial*=i, i ++);
	cout<<" факториал= "<<factorial <<" \ n ";
	return 0;
}
		

Задача 3.13. Вычислить сумму натуральных чётных чисел, не превышающих N.

Входные данные: N — целое число.

Выходные данные: S — сумма чётных чисел.

Промежуточные переменные: i — параметр цикла, принимает значения 2, 4, 6, 8 и так далее, также имеет целочисленное значение.

При сложении нескольких чисел необходимо накапливать результат в определённом участке памяти (S), каждый раз считывая из этого участка (S) предыдущее значение суммы (S) и прибавляя к нему слагаемое i. Для выполнения первого оператора накапливания суммы из участка памяти необходимо взять такое число, которое не влияло бы на результат сложения. Перед началом цикла переменной, предназначенной для накапливания сумы, необходимо присвоить значение нуль. Блок-схема решения этой задачи представлена на рис. 3.27.

Решим задачу двумя способами: с применением циклов while и for:

//Решение задачи с помощью цикла while
#include <iostream>
using namespace std;
int main ( )
{
	unsigned int N, i, S;
	cout<<" N = "; cin >>N;
	S=0;
	i =2;
	while ( i<=N)
	{
	S=S+i;
	i=i +2;
	}
	cout<<" S = "<<S<<" \n ";
	return 0;
	}
	//__________________________________
	//Решение задачи с помощью цикла for
#include <iostream>
using namespace std;
int main ( )
	{
	unsigned int N, i, S;
	for ( cout<<" N = ", cin >>N, S=0, i =2; i<=N; S+=i, i +=2);
	cout<<" S = "<<S<<" \n ";
	return 0;
}
		
Алгоритм вычисления суммы чётных натуральных чисел.

Рис. 3.27. Алгоритм вычисления суммы чётных натуральных чисел.
Сергей Радыгин
Сергей Радыгин

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

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

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

 

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

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