Программирование с использованием подпрограмм на языке С

 

Министерство Образования Республики Беларусь

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО

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

Кафедра: «Информационные технологии»







РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине: «Основы алгоритмизации и программирования»

на тему: «Программирование с использованием подпрограмм на языке С»


Выполнил: студент группы ИТ-11

Кулаженко Игорь Петрович

Руководитель: преподаватель

Кравченко Ольга Алексеевна








Гомель 20013г.

Введение

и++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей Cи++ является надмножеством языка программирования Cи. Помимо возможностей, которые дает Cи, Cи++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Разработчиком языка Си++ является Бьерн Страуструп. В своей работе он опирался на опыт создателей языков Симула, Модула 2, абстрактных типов данных. Основные работы велись в исследовательском центре компании Bell Labs.

Непосредственный предшественник Си++ - язык Си с классами - появился в 1979 году, а в 1997 году был принят международный стандарт Си++, который фактически подвел итоги его 20-летнего развития. Принятие стандарта обеспечило единообразие всех реализаций языка Си++. Не менее важным результатом стандартизации стало то, что в процессе выработки и утверждения стандарта язык был уточнен и дополнен рядом существенных возможностей.

Язык Си++ является универсальным языком программирования, в дополнение к которому разработан набор разнообразных библиотек. Поэтому, строго говоря, он позволяет решить практически любую задачу программирования. Тем не менее, в силу разных причин (не всегда технических) для каких-то типов задач он употребляется чаще, а для каких-то - реже.

Си++ как преемник языка Си широко используется в системном программировании. На нем можно писать высокоэффективные программы, в том числе операционные системы, драйверы и т.п. Язык Си++ - один из основных языков разработки трансляторов.

Поскольку системное программное обеспечение часто бывает написано на языке Си или Си++, то и программные интерфейсы к подсистемам ОС тоже часто пишут на Си++.

Распределенные системы, функционирующие на разных компьютерах, также разрабатываются на языке Си++. Этому способствует то, что у широко распространенных компонентных моделей CORBA и COM есть удобные интерфейсы на языке Си++.

Обработка сложных структур данных - текста, бизнес информации, Интернет страниц и т.п. - одна из наиболее распространенных возможностей применения языка. В прикладном программировании, наверное, проще назвать те области, где язык Си++ применяется мало.

Разработка графического пользовательского интерфейса на языке Си++ выполняется, в основном, тогда, когда необходимо разрабатывать сложные, нестандартные интерфейсы.

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

Подпрограмма - поименованная или иным образом идентифицированная часть компьютерной программы <#"justify">1.Постановка задач и исходные данные


1.Для решения каждой задачи в соответствии с условием, требуется разбить задачу на подзадачи и разработать вспомогательные и основной алгоритмы.

2.Оформить разработанные алгоритмы в виде графических схем.

.Написать программу с использованием подпрограмм, соответствующую разработанным алгоритмам.

.Отладить программу в среде программирования.

.Каждая подпрограмма в качестве входных параметров должна иметь массив и количество его элементов (при наличии массива). Результат выполнения подпрограммы передавать через ее заголовок и/или по оператору return.

.Исходные данные для отладки программы подобрать самостоятельно.

.Подготовить полный набор тестов для отладки разработанных программ.

прикладное программирование алгоритм

№ЗаданиеИспользуемые формулы1Вычислить кривизну К полукубической параболы с параметром a>0 в точке с абсциссой x и длину L дуги кривой от начала координат до точки с абсциссой x. 2Вычислить значение функции z.3Решить уравнение px2 + qx + t = 0, где p, q и t - минимальные значения элементов побочной диагонали матриц A, B и C, соответственно.-4Разработать и оформить в виде графической схемы алгоритм вычисления определенного интеграла с точностью ? методом Ньютона (правило 3/8).f1=;=;

f3=;Примечание: в задании 4 в функцию необходимо передать указатель на подынтегральную функцию.


.Передача параметров и возврат параметров для функции


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


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

В случае, если производится отладка одной цельной и большой программы, программисту необходимо сперва найти место, где находится ошибка и только после этого приступить к её устранению. При использовании подпрограмм эта задача значительно упрощается из-за того, что область поиска ошибок сужается до конкретной подпрограммы.

При написании подпрограмм очень важно следить за соблюдением области видимости переменных (область, внутри которой операторы могут «видеть» и изменять значение этой переменной). Так, локальные переменные (объявленные в самой подпрограмме или в её заголовке) будут доступны только внутри этой подпрограммы, а так же могут дублироваться в других подпрограммах без конфликта (области видимости не совпадают). Глобальные же переменные могут использоваться во всей программе и при объявлении такой же переменной (по имени) возникнет ошибка из-за перекрещения областей видимости этих переменных.

В подпрограммах используются три способа передачи переменных:

а)непосредственная передача переменной. При этом значение переменной можно изменять внутри самой подпрограммы, однако сама переменная (в той области видимости переменных, откуда была вызвана эта переменная) изменяться не будет;

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

в)возврат переменной как результата выполнения функции. Для этого необходимо явно задать тип возвращаемого значения (по умолчанию это int) и присвоить ему конкретное значение оператором return. При этом присвоении значения происходит выход из функции.

Выбор конкретного способа зависит от поставленной задачи и функционала подпрограммы.


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



.3Листинг программы


/*Кулаженко И.П. Курсовая рабата. Задача№1*/

#include <stdio.h> //Подключение библиотек;

#include<conio.h>

#include<math.h>KrivDlin(float a,float x, float *L); //Прототип функции;main()

{(); //Вызов ф-ции очистки экрана;L,K,a,x; //Объявление перенных;("Введите значение параметра полукубической параболы(а>0):");("%f",&a); //Ввод переменной а;(a<=0) //Проверка переменной а на соответствие условию;

{("Введено неверное значение параметра!");("Введите значение параметра полукубической параболы(а>0):");("%f",&a);

}("Введите абсцису точки (Х):");("%f",&x); //Ввод переменной х;=KrivDlin(a,x,&L); //Присвоение значения, возвращаемого

//подпрограммой KrivDlin переменной К;("------------------------------------------------------------");("| Исходные значения | Результат |");("------------------------------------------------------------");("| параметр а | абсциса Х | Кривизна | Длинна дуги |");("------------------------------------------------------------");("|%12f|%11f|%15f|%17f|\n",a,x,K,L);//Вывод исходных данных и

//результатов выполнения программы;("------------------------------------------------------------");(); //Вызов ф-ции задержки экрана;

}

/*Описание функции KrivDlin*/KrivDlin(float a,float x, float *L)

{K;=6*a/(sqrt(fabs(x))*pow((4+9*a*a*fabs(x)),1.5));

*L=(pow(4+9*a*a*x,1.5)-8)/(27*a*a);(K); //Возвращение значения переменной К

}


.4Тесты


.При a=1 и x=1: К=0.128008, L=1.43971;

.При а=2 и х=-2: K=0.012807, L= 0.012807;

.При а=5 и х=6: K= 0.0002458202, L= 73.799681;


3. Передача и возврат одномерных массивов в функцию


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


Передавать массив в функцию возможно двумя способами, в зависимости от типа массива:

а)Посредством указателя на начальный элемент массива - используется для динамических массивов. Характеризуется наибольшим быстродействием, поскольку в качестве параметра передается только один параметр;

б)Передается сам массив целиком - имеет наименьшее быстродействие, поскольку при вызове такой функции в качестве параметра передается весь массив. Данный метод возможно использовать только при сравнительно малых размерах передаваемого массива.


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


.3Листинг программы


//Кулаженко И.П.Курсовая работа.Задание №2

#include<conio.h>//Подключение библиотек

#include<stdio.h>

#include<math.h>

//Прототипы ф-ций*vvod(int *kol_el, char name); //Прототип ф-ции вводаvivod(float *mas,int kol_el,char name); //Прототип ф-ции выводаsum(float *mas, int kol_el,char name); //Прототип ф-ции суммированияmain()

{(); //Вызов ф-ции очистки экрана*x,*y,*z, //Указатели на первые элементы массивов x,y,z; //Переменная для хранения значения вычисляемой ф-цииm,n,lm; //Переменные для хранения кол-ва элементов в массивах x,y,z=vvod(&m,'x'); //Обращение к ф-ции ввода, ввод массива х("В массиве у должно быть не меньше 20 элементов");=vvod(&n,'y'); //Обращение к ф-ции ввода, ввод массива y(n==20) //Проверка на соответствие массива y условию задачи

{=vvod(&lm,'z'); //Обращение к ф-ции ввода, ввод массива z=sum(x,m,'x')*sin(sum(y,n,'y'))-cos(sum(z,lm,'z'));//Вычисление значения ф-ции, заданной в условии(x,m,'x'); //Обращение к ф-ции вывод, вывод массива х(y,n,'y'); //Обращение к ф-ции вывода, вывод массива у(z,lm,'z'); //Обращение к ф-ции вывода, вывод массива z("Значение ф-ции: %.12f\n",f); //Вывод вычичленного значения

}//Вывод неверном вводе массива у("В массиве у введено неверное кол-во элементов");[]x; //Высвобождение памяти[]y;[]z;(); //Задержка экрана

}

//Описание ф-ции суммированияsum(float *mas, int kol_el,char name)

{i;s=0;("Введите номер элемента масива %c с которого производить суммирование:\n",name);("%d",&i);(i;i<kol_el;i++)=s+mas[i]*mas[i];(s);

}

//Описание ф-ции ввода*vvod(int *kol_el, char name)

{i;*mas;("Введите количество элементов в массиве %c\n",name);("%d",kol_el);=new float[*kol_el];(i=0;i<*kol_el;i++)

{("%c[%d]=\n",name,i);("%f",&mas[i]);

}(mas);

}

//Описание ф-ции выводаvivod(float *mas,int kol_el,char name)

{i;(i=0;i<kol_el;i++)("%c[%d]=%f\n",name,i,mas[i]);("");

}


.4.Тесты


1.При:{1,1,1,1,1}; {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};{3,2,1};=5; lm=3;k=1;

4.427989;

. При:{3,1,2,1};{2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2};{4,3,1,1};= 4; lm=4;k=1;

-9.662369;

. При:{2,3,2,1};{3,3,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1};{2,2,1,1};=4; lm=4;k=1;

6.173706;


4.Передача двумерных массивов в функцию


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


Передача двумерных массивов в функцию может осуществляться двумя методами:

а)Передача двойного указателя (например, int **massiv). Этот метод является наиболее удобным для восприятия, поскольку не затрудняет понимания, к какому элементу массива идет обращение в данный момент (то есть в программе пишется massiv[i][j]);

б)Передача указателя на первый элемент массива (например, int *massiv). Этот метод является наиболее быстродействующим и гибким за счет того, что программист сам реализует необходимую адресацию при обращении к массиву. Однако при этом значительно усложняется код программы, поскольку необходимо вычислять позицию необходимого элемента массива по отношению к первому (в программе принимает следующий вид: massiv[i*n+j] - для стандартной адресации).


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





4.3 Листинг программы


//Курсовая работ.Кулаженко И.П.Задание№3

#include<conio.h> //Подключение необходимых библиотек

#include<stdio.h>

#include<math.h>

//Прототипы ф-ций*vvod(int *n,char name); //Прототип ф-ции вводаvivod(int *mas,int n,char name); //Прототип ф-ции выводаpoiskmin(int *mas,int n); //Прототип ф-ции поиска минимального элемента массиваmain()

{(); //Функция очистки экрана*A,*B,*C; //Указатели на массивы A,B,Cp,q,t; //Переменные для хранения мин. значений в матрицахn,m,k; //Переменные, указывающие на размерность матрицD,x1,x2;=vvod(&n,'A'); //Ввод матрицы A=vvod(&m,'B'); //Ввод матрицы В=vvod(&k,'C'); //Ввод матрицы С=poiskmin(A,n); //Поиск минимального значения в матрице A=poiskmin(B,m); //Поиск минимального значения в матрице В=poiskmin(C,k); //Поиск минимального значения в матрице С("Введенные матрицы");(A,n,'A'); //Выводы матриц A,B,C(B,m,'B');(C,k,'C');("p=%d q=%d t=%d\n",p,q,t);=(q*q)-(4*p*t); //Нахождение дискриминанта(D>=0) //Проверка на наличие действительных корней

{=(-q-sqrt(D))/(2*p); //Нахождение корней уровнения=(-q+sqrt(D))/(2*p);("Корни уровнения %dx^2+%dx+%d=0:\nx1=%f x2=%f",p,q,t,x1,x2);

}("Дискрименант уровнения %dx^2+%dx+%d=0 отрицательный\n",p,q,t);();

}

//Описание ф-ции ввода*vvod(int *n,char name)

{i,j,nn;*mas;("Введите размерность квадратной матрицы");("%d",n);=*n**n;=new int [nn];(i=0;i<*n;i++)(j=0;j<*n;j++)

{("%c[%d,%d]=",name,i,j);("%d",&mas[*n*i+j]);

}(mas);

}

//Описание ф-ции нахождения минимального элементаpoiskmin(int *mas,int n)

{min,i;=mas[n-1];(i=1;i<n;i++)(mas[i*n+n-1-i]<min)=mas[i*n+n-1-i];(min);

}

//Описание ф-ции выводаvivod(int *mas,int n,char name)

{i,j;(i=0;i<n;i++)

{(j=0;j<n;j++)("%c[%d,%d]=%d ",name,i,j,mas[i*n+j]);("");

}("");

}


.4 Тесты


. A={ 2 3 2

1 2 1

1 0 2};={ 2 8

2 };={ 1 0 4

2 1

0 2 };=1; q=2; t=1;2 + qx + t = 0;=-1; x2=-1;

.A={ 2 4 7

6 1

0 2};={ 3 -5

2 };={ 2 2 7

6 3

9 2 };=1; q=-5; t=6;2 + qx + t = 0;=2; x2=3;

.A={ 2 3 2

2 1

0 2};={ 2 8 11

12 1

7 1};={ 1 4 -8

2 1

0 2 };=2; q=6; t=-8;2 + qx + t = 0;=-4; x2=1;


5.Передача функции в функцию


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


.1.1 Передача функции в функцию

Указатель на функцию - такой тип переменной, которой можно присваивать адрес точки входа в функцию, т.е. адрес первой исполняемой команды. Эта переменная может в дальнейшем использоваться для вызова функции вместо ее имени.

Общий вид определения указателя на функцию:


Тип_результата (*имя_указателя_на_функцию) (список типов параметров);


Указатели на функцию передаются в качестве аргумента другим функциям, если последние реализуют какой-либо метод обработки функций, не зависящий от вида конкретной обрабатываемой функции. Эта конкретная (фактическая) функция вызывается из тела обрабатываемой функции по переданному ей указателю.

Чтобы сделать программу легко читаемой, при описании указателей на функцию используют создание новых типов (typedef). Например,

float (*func) (float);


Здесь описан тип func как указатель на функцию с одним параметром типа float и возвращающую результат типа float.

Указатели на функцию используются часто. Например, многие библиотечные функции в качестве аргументов получают указатель на функцию. Использование указателей на функцию в качестве аргументов позволяет разрабатывать универсальные функции, например численного решения уравнений, численного интегрирования и дифференцирования. Можно создавать массивы указателей на функции. Массивы указателей на функции используются, например, для организации меню.


.1.2 Численное интегрирование. Метод Ньютона (правило 3/8)

Одномерный определенный интеграл вида



с пределами интегрирования можно трактовать как площадь фигуры, ограниченной отрезками прямых , осью абсцисс и графиком подынтегральной функции Если известна первообразная для то интеграл легко определяется по формуле Ньютона-Лейбница Для некоторых подынтегральных функций интеграл можно вычислить аналитически, найти в справочниках или оценить с помощью асимптотических рядов. Однако в общем случае может быть не определена: либо первообразные не выражаются через элементарные функции, либо сами подынтегральные функции не являются элементарными. Это приводит к необходимости разработки приближенных методов вычисления определенных интегралов.



Наиболее общеупотребительными приближенными методами вычисления одномерных определенных интегралов являются так называемые классические» методы численного интегрирования по квадратурным формулам: метод прямоугольников, метод трапеций, метод парабол (основанные на суммировании элементарных площадей, на которые разбивается вся площадь под функцией . Хотя эти методы обычно предпочтительны в случае малых размерностей, они практически не годятся для вычисления многомерных интегралов, для вычисления последних наиболее пригоден метод Монте-Карло (численный метод решения математических задач при помощи моделирования случайных величин).

Во всех этих методах отрезок интегрирования разбивается на достаточно большое число равных частей, на которых строятся искомые площади (рис. 8.2):


и


Оценкой площади под кривой служит сумма площадей криволинейных трапеций Простой прием построения формул для расчета интегралов состоит в том, что подынтегральная функция заменяется

на отрезке интерполяционным многочленом и получается приближенное равенство




Используемая на практике квадратурная формула интерполяционного типа - так называемое «правило 3/8» получается при замене подынтегральной функции интерполяционным полиномом третьей степени, построенным по четырем точкам.



где, Fi=F(xi), xi=a+ih, h=(b-a)/3k- расстояние между узлами интерполяции,число разбиений отрезка [a, b], i=0,1,…3k;


5.2 Блок-схема программы





.3 Листинг программы


//Кулаженко И.П. Курсовая работа. Задание№4

#include<stdio.h> //Подключение библиотек.

#include<conio.h>

#include<math.h>float(*funct_type)(float);//Объявление пользовательского типа

//funct_type - указатель на ф-цию.

//Прототипы ф-ций.integral(float a,float b,funct_type funct,float E);f1(float x);f2(float x);f3(float x);main()

{(); //Вызов ф-ции очистки экрана.a,b, //Объявление переменных,отвечающих

//за границы интегрирования._f1, //Объявление переменных, в которые_f2, //будет возвращаться результат_f3, //выполнения ф-ции integral.; //Объявление переменной, отвечающей

//за точность.("Введите отрезок [a,b]");("%f%f",&a,&b); //Ввод границ интегрирования.("Введите точность");("%f",&E); //Ввод точности._f1=integral(a,b,f1,E); //Вызов ф-ции integral, вычисление интеграла от f1(x)._f2=integral(a,b,f2,E); //Вызов ф-ции integral, вычисление интеграла от f2(x)._f3=integral(a,b,f3,E); //Вызов ф-ции integral, вычисление интеграла от f3(x).

//Вывод результатов выполнения программы.("Значение интеграла от ф-ции f1(x)=%f\n",integ_f1);("Значение интеграла от ф-ции f2(x)=%f\n",integ_f2);("Значение интеграла от ф-ции f3(x)=%f\n",integ_f3);(); //Вызов ф-ции задержки экрана.

}

//Описани ф-ции интеграл.integral(float a,float b,funct_type funct,float E)

{n=6; //Объявление переменной n, определяющей

//количество частей, на которые разбивается отрезок[a,b].h,integ1,integ2,x,s1,s2;=(b-a)/n; //Вычисление значения шага переменной х.=3*h/8*(funct(a)+funct(b)+2*funct(a+3*h)+3*(funct(a+h)+funct(a+2*h)+funct(a+4*h)+funct(a+5*h)));=1000;sa=funct(a), sb=funct(b);(fabs(integ1-integ2)>E) //Цикл, выполняющийся до достижения заданной точности.

{+=12; //Увеличение часией разбиения отрезка[a,b], для увеличение точности.=(b-a)/n; //Вычисление шага с учётом нового значения n.=integ2;=s2=0;(int i=1;i<=n-1;i++) //Цикал начисления сумм s1,s2, с учётом специфики

{ //используемого метода.(i%3==0)+=funct(x);+=funct(x);=a+i*h; //Вычисление шага переменной х.

}=3*h/8*(sa+sb+2*s1+3*s2); //Вычисление значения интеграла.

}(integ2); //Возврат значения переменной integ2.

}

//Описание ф-ции f1.f1(float x)

{funct;=1/sqrt((x+2)*(x+0.5));(funct); //Возврат вычисленного значения ф-циий.

}

//Описание ф-ции f2.f2(float x)

{funct;=(x-3)*atan(x);(funct); //Возврат вычисленного значения ф-циий.

}

//Описание ф-ции f3.f3(float x)

{funct;=x*x*x-2*x*x+16;(funct); //Возврат вычисленного значения ф-циий.

}


.4 Тесты


Тест 1

1.График функции f1(x)= , на отрезке [2, 4.5];




Значение интеграла от функции f1(x) на отрезке [2, 4.5]:



2.График функции f2(x)= , на отрезке [2, 4.5]:







Значение интеграла от функции f2(x) на отрезке [2, 4.5]:



.График функции f3(x)= , на отрезке [2,4.5]:







Значение интеграла от функции f3(x) на отрезке [2, 4.5]:


Тест 2

1.График функции f1(x)= , на отрезке [0, 3];


Значение интеграла от функции f1(x) на отрезке [0, 3]:




.График функции f2(x)= , на отрезке [0, 3]:


Значение интеграла от функции f2(x) на отрезке [0, 3]:



.График функции f3(x)= , на отрезке [0,3]:

Значение интеграла от функции f3(x) на отрезке [0,3]:





Тест 3

1.График функции f1(x)= , на отрезке [4,5];



Значение интеграла от функции f1(x) на отрезке [4, 5]:


.График функции f2(x)= , на отрезке [4, 5]:


Значение интеграла от функции f2(x) на отрезке [4, 5]:



.График функции f3(x)= , на отрезке [4,5]:



Значение интеграла от функции f3(x) на отрезке [4,5]:





Заключение


Курсовое проектирование является необходимым этапом подготовки и обучения студентов, становления их как высококвалифицированных специалистов и играет важную роль в формировании самостоятельного творческого мышления студента. Курсовая работа представляет собой комплексную учебно-исследовательскую работу студента, которая выполняется на основе теоретических и практических знаний, накопленных в процессе обучения дисциплине. Она является многоцелевым элементом учебного процесса и позволяет привить студентам навыки и умения сбора, анализа, обобщения информации по данной предметной области, решения конкретной прикладной задачи с применением обоснованно выбранной компьютерной системы.

В ходе выполнения курсовой работы мною были получены незаменимые практические навыки написания компьютерных программ на языке Си. Так же был осмыслен прикладной характер тех знаний, которые были получены на лекциях и практических занятиях. В ходе изучения поставленной задачи был получен незаменимый опыт работы с источниками информации, что немало важно для дальнейшего обучения и в будущем для совершенствования себя как специалиста.

Данной курсовой работай можно подвести итог тому, что было сделано в ходе изучения дисциплины «основы алгоритмизации и программирования» и считать первым пройденным этапом на пути становления будущего инженера.


Список литературы


1.Шилд Г. «Самоучитель С++» БХВ «Питербург» 2003г.

2.Страуструп Б. «Справочное руководство по С++» Москва 1999г.

.Трохова Т.А., Самовендюк Н.В., Романькова Т. Практическое руководство к курсовому проектированию по курсу "Информатика" для студентов технических специальностей дневной и заочной форм обучения. - Гомель: Учреждение образования "ГГТУ имени П.О.Сухого", 2004. - с.

.О.А. Кравченко, Д.А. Литвинов. Пособи по курсу «подпрограммы и программирование с их использованием на языке С» для студентов дневной и заочной форм обучения специальностей 1-36 04 02 всех специальностей "Промышленная электроника", 1-40 01 02 "Информационные системы и технологии"

.Бахвалов Н.С. Численные методы. М., 1973.

6.Никольский С.М. Квадратурные формулы. М., 1958.

7.#"justify">Приложение А


Результаты выполнения программы для Задания №1

Введите значение параметра полукубической параболы(а>0):


Введите абсцису точки(Х):


| Исходные значения | Результат |

--------------------------------------------------------------------

| параметр а | абсциса Х | Кривизн | Длинна дуги |

--------------------------------------------------------------------

| 1.000000| 1.000000| 0.128008| 1.439710 |

--------------------------------------------------------------------

Введите значение параметра полукубической параболы(а>0):


Введите абсцису точки(Х):


------------------------------------------------------------------------

| Исходные значения | Результат |

------------------------------------------------------------------------

| параметр а | абсциса Х | Кривизн | Длинна дуги |

-----------------------------------------------------------------------

| 1.000000| 1.000000| 0.128008| 1.439710|

-----------------------------------------------------------------------

Введите значение параметра полукубической параболы(а>0):


Введите абсцису точки(Х):


| Исходные значения | Результат |

------------------------------------------------------------------------

| параметр а | абсциса Х | Кривизн | Длинна дуги |

| 1.000000| 1.000000| 0.000246| 73.799683|

-----------------------------------------------------------------------

Приложение Б


Результаты выполнения программы для Задания №2[0]= 1.000000[1]= 1.000000[2]= 1.000000[3]= 1.000000[4]= 1.000000[0]= 1.000000[1]= 1.000000[2]= 1.000000[3]= 1.000000[4]= 1.000000

…[18]= 1.000000[19]= 1.000000[0]= 3.000000[1]= 2.000000[2]= 1.000000

значение ф-ции: 4.427989006042[0]= 3.000000[1]= 1.000000[2]= 2.000000[3]= 1.000000[0]= 2.000000[1]= 2.000000[2]= 1.000000[3]= 1.000000[4]= 1.000000

…[18]= 1.000000[19]= 2.000000[0]= 4.000000[1]= 3.000000[2]= 1.000000[2]= 1.000000

значение ф-ции: -9.662369728088[0]= 2.000000[1]= 3.000000[2]= 2.000000[3]= 1.000000[0]= 3.000000[1]= 3.000000[2]= 3.000000[3]= 2.000000[4]= 2.000000[5]= 1.000000[6]= 1.000000[4]= 0.000000

…[18]= 0.000000[19]= 1.000000[0]= 2.000000[1]= 2.000000[2]= 1.000000[2]= 1.000000

значение ф-ции: 6.173706054688


Приложение В


Результаты выполнения программы для Задания №3


Введенные матрицы[0,0]=2 A[0,1]=3 A[0,2]=2[1,0]=1 A[1,1]=2 A[1,2]=1[2,0]=1 A[2,1]=0 A[2,2]=2[0,0]=2 B[0,1]=8[1,0]=2 B[1,1]=2[0,0]=1 C[0,1]=0 C[0,2]=4[1,0]=1 C[1,1]=2 C[1,2]=1[2,0]=1 C[2,1]=0 C[2,2]=2=1 q=2 t=1

Корни уровнения 1x^2+2x+1=0:=-1.000000 x2=-1.000000

Введенные матрицы[0,0]=2 A[0,1]=4 A[0,2]=7[1,0]=1 A[1,1]=6 A[1,2]=1[2,0]=1 A[2,1]=0 A[2,2]=2[0,0]=3 B[0,1]=-5[1,0]=2 B[1,1]=2[0,0]=2 C[0,1]=2 C[0,2]=7[1,0]=3 C[1,1]=6 C[1,2]=3[2,0]=7 C[2,1]=9 C[2,2]=2=1 q=-5 t=6

Корни уровнения 1x^2+-5x+6=0:=2.000000 x2=3.000000

Введенные матрицы[0,0]=2 A[0,1]=3 A[0,2]=2[1,0]=1 A[1,1]=2 A[1,2]=1[2,0]=2 A[2,1]=0 A[2,2]=2[0,0]=2 B[0,1]=8 B[0,2]=11[1,0]=2 B[1,1]=12 B[1,2]=1[2,0]=6 B[2,1]=7 B[2,2]=1[0,0]=1 C[0,1]=4 C[0,2]=-8[1,0]=1 C[1,1]=2 C[1,2]=1[2,0]=1 C[2,1]=0 C[2,2]=2=2 q=6 t=-8

Корни уровнения 2x^+6x+-8=0:=-4.000000 x2=1.000000


Приложение Г


Результаты выполнения программы для Задания №4


Введите отрезок [a,b]


.5

Введите точность

.000000001

Значение интеграла от ф-ции f1(x)=0.579820

Значение интеграла от ф-ции f2(x)=0.908314

Значение интеграла от ф-ции f3(x)=83.107857

Введите отрезок [a,b]



Введите точность

.000000001

Значение интеграла от ф-ции f1(x)=1.321113

Значение интеграла от ф-ции f2(x)=-3.042308

Значение интеграла от ф-ции f3(x)=50.252434

Введите отрезок [a,b]



Введите точность

.000000001

Значение интеграла от ф-ции f1(x)=0.175870

Значение интеграла от ф-ции f2(x)=2.031002

Значение интеграла от ф-ции f3(x)=67.586716



Министерство Образования Республики Беларусь УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО Факультет авт

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ