Программирование
Автор: Никита Антоненко • Май 29, 2018 • Контрольная работа • 2,447 Слов (10 Страниц) • 882 Просмотры
Федеральное агентство железнодорожного транспорта Омский государственный университет путей сообщения Кафедра «Автоматика и системы управления» ИЗУЧЕНИЕ СРЕДЫ ПРОГРАММИРОВАНИЯ Лабораторная работа № 2 по теме «Программирование» | |
Студент гр. 27м Н.О Антоненко « » 2018 г. Руководитель – Ст.преподаватель кафедры «АиСУ» А.В. Александров « » 2018 г. | |
Омск 2018 |
1 Цель работы
Овладение навыками построения простых и вложенных циклов, повторение основных форм записи циклов на языке С.
2 Выполнение работы
2.1 Программа №1
2.1.1 Посчитать сумму ряда, ограничивая число элементов ряда первым элементом, меньшим заданной величины eps. Определить реальную точность ряда
Исходный код программы
#include
#include "math.h"
const float eps = 0.01;
/*Функция вещественного типа высчитывает функцию при определенном n,
которая передается в аргумент
*/
float function(int n)
{
float res = pow(-1,n-1)/n;
return res;
}
/*Функция рекурсивная. Аргументы: n - число n,
*range - указатель на ряд суммы*/
void summ_r(int n, float *range)
{
if(fabs(function(n))>=eps) //проверяет, больше ли значение функции eps
{
*range+=function(n);
n++;
summ_r(n, range); //функция вызывает сама себя
}
}
main()
{
int n = 1; //начальное значение n(по условию)
float range=0;
float *p=⦥
summ_r(n, p);
printf("Сумма ряда равна %f\n", range);
printf("Погрешность %f", (log(2)-range)/100);
}
Листинг 1 – Листинг программы 2.1.1
2.1.2 Реализовать функцию, ограничивая число элементов ряда первым элементом, меньшим заданной величины eps. Рассчитать 10 значений из области сходимости
Исходный код программы
#include "stdio.h"
#include "math.h"
#include "windows.h"
#include "assert.h"
const float eps = 0.01; //ограничение для ряда
float funct_1(float x) //функция e^x
{
return pow(2.71828, x);
}
int fact(int n) //функция, высчитывающая факториал
{
if(n==0) return 1;
if(n==1) return 1;
return fact(n-1)*n;
}
float range(float x, int n) //функция, высчитывающая значение
//ряда при определенном x, n
{
return pow(x, n)/fact(n);
}
float funct_2(float x, int n)//функция-разложение в ряд (рекурсивная)
{
float res=0; //переменная, в которую записывается сумма при
//каждом n
if (range(x, n)>eps)//ограничение по eps
{
res=range(x, n);
#ifdef DEBUG
printf("range = %10f, x=%f, n=%i\n", range(x, n), x, n);
#endif
n++; //n увеличивается и вновь вызывается функция
return res+funct_2(x, n);
}
return res;
}
main()
{
system("cls");
float i, t=0, a[10],b[10]; //массивы, в которые записываются значение функций
float x;
int j, n=0;
printf("| x | e^ | range |\n"); //шапка таблицы
...