Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

пр1 (3)

.docx
Скачиваний:
0
Добавлен:
06.05.2023
Размер:
160.57 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ ГАГАРИНА Ю.А.»

Институт Прикладных информационных технологий и коммуникаций

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

Кафедра Информационно - коммуникационные системы и программная

инженерия

Контрольная работа

по дисциплине: «Программирование»

на тему

«Организация управляющих структур»

Оценка работы________

Дата защиты 21.01.2022

Подпись ___________

Саратов – 2022

Цель: изучение основных математических операций, приобретение навыков в построении и программировании циклических алгоритмов, изучение и использование операторов циклов и процедур передачи управления.

Вариант 2.

Разработать алгоритм и программу приближенного вычисления интеграла вида:

Расчет вести методом трапеции. Пределы интегрирования a, b и шаг интегрирования h (h=const) вводятся пользователем, 0 ≤ a, b ≤ 20; a < b;

0,0001 ≤ h ≤ 1. Для приближенного вычисления использовать формулу:

, где

.

Теоретические сведения.

Вычисление интеграла. Метод трапеции.

Необходимо рассчитать интеграл функции f(x) в интервале [a;b]. Разделим график кривой функции на элементарные сегменты при помощи точек с абсциссами x i, соединив точки ( , ), получаем ломаную кривую, причем  =f ) , может принимать значения от 0 до n−1.

Выбираем число отрезков, на которые разобьём заданный интервал, и вычислим длину каждого такого отрезка по формуле:

При расчетах методом трапеций соединяем одну с другой соседние точки разбивки, в итоге образовываются отдельные сегменты. Таким образом, значение функции f(x) берем на границах каждого отрезка. Вычисляем площадь каждой элементарной трапеции по формуле:

Приближенную площадь фигуры, которая ограничена линиями x = a, x = b осью 0x и графиком кривой f(x) рассчитаем, как сумму площадей всех элементарных сегментов по формуле:

Запишем общую формулу приближенного расчета интеграла методом трапеций:

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

Вводится переменная a и проверяется условие 0 ≤ a < 20, если вводимая переменная a не удовлетворяет условие, то запрос ввода переменной a повторяется. Если переменная a удовлетворяет условие запроса, то вводится переменная b и проверяется условие 0 < b ≤ 20, a < b. Если вводимая переменная b не удовлетворяет условие, то запрос ввода переменной b повторяется. Если переменная b удовлетворяет условие запроса, то вводится переменная h и проверяется условие 0,0001 ≤ h ≤ 1. Если вводимая переменная h не удовлетворяет условие, то запрос ввода переменной h повторяется. Если переменная h удовлетворяет условие запроса, то происходит вычисление количества отрезков интегрирования n, после происходит вычисление суммы первого - y(0) и последнего отрезка - y(n). Далее с помощью цикла for, происходит вычисление отрезков от y(1) до y(n-1), результаты вычислений отрезков от y(0) и y(n) суммируются с результатами вычислений y(1) до y(n-1) и выводится в консоль.

Блок-схема алгоритма программы.

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

#include <iostream>

#include <cstdlib>

#include <stdio.h>

#include <math.h>

#include <conio.h>

using namespace std;

double f(double x)

{

return sqrt(1+x*x);

}

int main()

{

setlocale(LC_ALL,"Russian");

char k;

do

{

setlocale(LC_ALL,"Russian");

printf("Вычисление интеграла sqrt(1+x*x)dx\n\n");

int i;

double a,b,n,h,integral;

do

{

cin.clear();

cin.seekg(0);

cout<<"Введите предел a, где a (0<=a<20] : ";

cin>> a;

} while((a < 0)||(a > 20)||(!cin.good()));

do

{

cin.clear();

cin.seekg(0);

cout<<"Введите предел b, где b (b>a) и b<=20) : ";

cin>>b;

} while((((b == a)||(b > 20))||(b < a)||(!cin.good())));

do

{

cin.clear();

cin.seekg(0);

cout<<"Введите шаг интегрирования h, где (0.0001<=h<=1) : ";

cin>>h;

} while((h<0.0001)||(h>1)||(!cin.good()));

n=(b-a)/h;

integral=h*(f(a)+f(b))/2.0;

for(i=1;i<n;i++)

{

integral=integral+h*f(a+h*i);

}

printf("Интеграл = %.6f\n",integral);

printf("\n\nПовтор - y\nВыход - любая клавиша\n");

k=_getch();

}while(k=='y');

return 0;

}

Пример работы программы.

Пример 1:

Пример 2:

Пример 3:

Вывод:

Изучил управляющие структуры языка программирования, приобрел практические навыки в использовании разветвленных структур, операторов циклов и процедур передачи управления.

ЛИТЕРАТУРА

  1. Синицын, С. В. Программирование на языке высокого уровня: учебник / С. В. Синицын, А. С. Михайлов, О. И. Хлытчиев. - М.: ИЦ "Академия", 2010. - 400 с. (17 экз. НТБ СГТУ)

  2. Маслянкин, В. И. Визуальное программирование [Текст]: методический сборник / Маслянкин В.И. - Москва: Российский новый университет, 2010. - 40 с. Режим доступа: http://www.iprbookshop.ru/21265 .

  3. Шишкин, А. Д. Практикум «Программирование на языке Си» [Текст] /Шишкин А. Д. - Санкт-Петербург: Российский государственный гидрометеорологический университет, 2013. - 52 с. Режим доступа: http://www.iprbookshop.ru/17958 .

  4. Подбельский, В. В. Язык Си#. Базовый курс [Электронный ресурс]: учебное пособие / Подбельский В. В. - Москва: Финансы и статистика, 2011. - 384 с. Режим доступа: http://www.iprbookshop.ru/18866 .

  5. Павловская, Т. А. C/C++. Структурное программирование: практикум / Т. А. Павловская, Ю. А. Щупак. - СПб. [и др.]: Питер, 2007. (10 экз. НТБ СГТУ)

Соседние файлы в предмете Объектно ориентированное программирование