
_ОП_ЛР3
.doc
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
-
Федеральное государственное автономное образовательное учреждение высшего образования
«Санкт-Петербургский государственный университет аэрокосмического приборостроения»
КАФЕДРА № 2
Преподаватель
доцент, к.т.н. Куртяник Д.В.
Отчёт
по лабораторной работе №3
по дисциплине Информатика
на тему: «Операторы цикла: заданное число повторений»
Работу выполнил
студент гр. 4616 Павлов А.В.
Санкт-Петербург
Цель лабораторной работы: изучение концепций и освоение технологии процедурного программирования, приобретение навыков процедурного программирования на языке C/С++ циклических вычислений.
Задание на программирование: используя технологию процедурного программирования разработать программу решения индивидуальной задачи тремя видами циклических управляющих структур: Цикл - Пока (с предусловием), Цикл - До (с постусловием), Цикл - Для (с параметром).
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание. Выполнить постановку задачи: сформулировать условие, определить входные и выходные данные.
2) Разработать математическую модель.
3) Построить схему алгоритма, последовательно используя для решения задачи все три циклические управляющие структуры (операторы while, do…while, for). Каждое решение должно быть реализовано в виде отдельной функции.
При этом запрещается использовать оператор if для проверки условия входа в циклы и в качестве одного из операторов тела цикла;
4) Составить программу на языке C/С++.
5) Входные данные вводить с клавиатуры по запросу.
6) Вывод результатов должен осуществляться в функции main(). Выходные данные выводить на экран в развернутой форме с пояснениями.
7) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
8) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов, в том числе с ошибочными входными данными.
9) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
1-3)
Вариант 10
Для введённого с клавиатуры значения N найти (2*N+1)!! по формуле
(2*N+1)!! = 1*3*5*…*(2*N-1)*(2*N+1).
Результат = ((2*N-1) * (2*N+1))
Текст программы.
//Для введённого с клавиатуры значения N найти (2*N+1)!! по формуле
//(2*N+1)!! = 1*3*5*…*(2*N-1)*(2*N+1).
#include<iostream>
#include <locale>
#include <cmath>
int recur1(int n) ;
int recur2(int n) ;
int recur3(int n) ;
using namespace std;
int main()
{int var, n ;
int re1, re2, re3 ; //результаты решения задачи
float y;
setlocale(LC_ALL,"Russian") ;
for(;;)
{
//Выбор вида действия
cout << " Вид действия:\n" ;
cout << " 1 - вычисление по рекуррентной формуле\n" ;
cout << " 2 - завершение задачи\n" ;
cout << " Введите вид действия -> " ;
cin >> var ;
switch(var)
{case 1:
//Ввод исходных данных
cout << " Введите n -> " ;
cin >> n;
re1 = recur1(n) ;
re2 = recur2(n) ;
re3 = recur3(n) ;
//Вывод результата
cout << "Для цикла WHILE результат = " << re1 << endl ;
cout << "Для цикла DO..WHILE результат = " << re2 << endl ;
cout << "Для цикла FOR результат = " << re3 << endl ;
break ;
default: return 0 ;
}//switch
}//for
}
//вычисление значения рекуррентного выражения циклом while
int recur1(int n)
{int i = 1, y=1 ;
while(i <= n)
{y = y * (2*i+1) ;
i++ ;
}
return y ;
}
//вычисление значения рекуррентного выражения циклом do..while
int recur2(int n)
{int i = 1, y=1 ;
do
{y = y * (2*i+1) ;
i++ ;
}
while(i <= n) ;
return y ;
}
//вычисление значения рекуррентного выражения циклом for
int recur3(int n)
{int i, y=1 ;
for(i = 1 ; i <= n ; i++)
{ y = y * (2*i+1);
}
return y ;
}
Примеры.