Список используемых информационных источников

Лабораторная работа №3

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

Цель работы

Получить навыки программирования циклических алгоритмов на языке C++.

Постановка задачи

Cоставить программу вычисления суммы S.

 

Значение n ввести с клавиатуры.

 

Описание алгоритма

       
 
   
false
 

 


 

 

false
               
   
false
 
   
   
 
 
 
           
 
 
   
 
   

 


 

Текст исходного кода программы с комментариями

#include <iostream>

#include <math.h>

#include <cmath>

#include <cstdlib>

 

using namespace std;

 

long double fact(int N) //нахождение факториала числа N

{

if (N < 0)

return 0;

if (N == 0)

return 1;

else

return N * fact(N - 1);

}

 

 

long double proizv(int n) { //нахождение произведения n*(n+1)*...*(n^2)

long double sum, sum1, sumpart;

int k;

k = pow(n, 2); //верхняя граница произведения

sum = fact(k);

sumpart = fact(n - 1);

 

if (sum == 1)

sum1 = 1;

else

sum1 = sum / sumpart;

return sum1;

}

 

 

int main() {

setlocale(LC_ALL, "Russian");

int n, k, i, answer;

long double sum1, sumall = 0;

cout << "Введите n: ";

cin >> n;

if (n<1 || cin.fail())

cout << "Неверно. Введите натуральное число." << endl;

cin.clear();

cin.ignore(cin.rdbuf()->in_avail());

while (n<1) {

cout << "Введите натуральное число: ";

cin >> n;

if (n<1 || cin.fail()) cout << "Неверно. Введите натуральное число." << endl;

cin.clear();

cin.ignore(cin.rdbuf()->in_avail());

}

 

cout << "Максимальный элемент=" << proizv(n) << endl;

 

for (int i = 1; i <= n; i++) //цикл нахождения суммы элементов

{

sumall += proizv(i); //сумма элементов

}

 

cout << "Сумма: " << sumall << endl;

cout << endl;

cout << "Желаете просмотреть слагаемые? Нажмите 1 для их просмотра и 0 для завершения программы." << endl;

cin >> answer;

if (answer<0 || answer>1 || cin.fail())

cout << "Неверно. Нажмите 1 для их просмотра и 0 для завершения программы." << endl;

cin.clear();

cin.ignore(cin.rdbuf()->in_avail());

while (answer<0 || answer>1) {

cout << "Сделайте выбор: ";

cin >> answer;

if (answer < 0 || answer > 1 || cin.fail()) cout << "Неверно. Нажмите 1 для их просмотра и 0 для завершения программы." << endl;

cin.clear();

cin.ignore(cin.rdbuf()->in_avail());

}

 

switch (answer) {

case 1:

for (int i = 1; i <= n; i++) //цикл вывода слогаемых

{

cout << i << " слагаемое=" << proizv(i)<<endl; //вывод слогаемых

}

break;

case 0:

exit(0);

break;

}

system("Pause");

return 0;

}

 

Контрольный прогон программы

Тест №1 – ввод сначала не корректных, и последующий ввод корректных значений с отображением слагаемых.

Рис. 2. Результат теста №1

Вывод

Данная программа позволяет освоить навыки написания циклических алгоритмов на языке С++. Также я получил опыт в написании функций (fact, proizv) и их использовании в главной процедуре (int(main){}).

 

Список используемых информационных источников

1. Павловская Т.А. С/С++. Программирование на языке высокого уровня- Санкт-Петербург. Питер, 2006.

2. Интернет-ресурс: http://cppstudio.com/post/348/

3. Интернет-ресурс: http://cppstudio.com/post/396/

4. Единая система программной документации (ЕСПД) ГОСТ 19.701-90

5. Сыромятников В.П. «Программирование», МТУ МИРЭА, лекции, 2016/2017.