- •(1) Основные определения языка с. Алфавит языка. Структ. Прог.
- •Void main () - имя осн. Программы
- •(2) Осн. Типы данных. Константы.
- •(3) Выражения. Операторы.
- •Int i_arr[10]; char liter[80]; double l_mas[100];
- •(18) Понятие об указателях.Объявление и разыменовывание указателей.
- •(22)Динамические структуры данных. Списки.
- •(25)Вычисление интеграла методом прямоугольников c заданной точностью.
- •(26)Вычисление интеграла
- •Void main(){unsigned int I,n; float a,b,X,h,y,s;
- •Designed by barcas&kitty
(22)Динамические структуры данных. Списки.
Стек - это структура данных , организованная по принципу: «последним вошел первым вышел». Аналог стека бусинки, нанизанные на нитку. Последнюю из бусинок легко снять, а чтоб снять первую, надо снять все предыдущие. Для формирования стека объявляется такая же структура как и для формирования очереди: typedef stuct node {int info; stuct node *next;} Node; typedef Node *Nodeptr;//указатель на структуру типа node; Формирование можно осуществить с помощью следующих операторов. Nodeptr= NULL; if{ (head==NULL) {head=(NodePtr)malloc(sizeoff(Node)); head->info=random(100)-50; head->next=NULL;} else { p=(Nodeptr)malloc(sizeoff(Node)); p->info= random(100)-50; p->next=head; headl=p;} Если известно количество элементов в стеке, или признак завершения его формирования , то пользуются одним из операторов цикла.
Первым в стек на рис. помещён элемент с информационным полем, =1, вторым-2м и т.д. Как видно из рис. следуя указателям next и head, мы доберёмся до элемента 1 в последнюю очередь.
(23)Численные методы. Метод деления отрезка пополам. Решить уравнение f(x)=0 с заданной точностью методом деления отрезка пополам.Метод деления отрезка пополам заключается в следующем.. Проверяется наличие корня на отрезке [а, b]. Для этого вычисляются значения функции f(а) и f(b) . Если f(а)*f(b) > 0, то уравнение не имеет корней на заданном отрезке. Если f(а) * f(b) < 0, т. е. на концах отрезка [а, b] функция f(х) имеет противоположные знаки, то искомый корень лежит на этом отрезке. Поиск корня происходит следующим образом. Находим в точке а значение функции у1=f(а). Затем определяем значение х как среднюю точку между а и b, вычисляем значения у2=f(х). Теперь, если f(а) * f(х) > 0, то корень находится на отрезке [a, b]. Переместим точку, а вправо, выполнив присвоение а=х. В противном случае нужно перемещать влево точку b: b=х. Таким образом, получим второй отрезок [а, b], но вдвое меньше предыдущего. Процесс деления отрезка пополам продолжается до тех пор, пока отрезок [а, b] не станет меньше заданной точности.
(24)Численные методы. Метод простых итераций. Вычисление с заданной точностью корня уравнения F(x)=0 методом итераций.
Пусть корень уравнения находится на отрезке [ a, b ].
Для использования метода итераций исходное уравнение F(x)=0 нужно привести к виду x=f(x). Если известно начальное приближение к корню х=х1, то подставив его в правую часть уравнения х=f(x), получим новое приближение x3=f(x2),…..xk+1=f(xk). Итерационный процесс сходится к корню уравнения, если |f ‘(x)|<1 на отрезке, содержащем корень уравнения. Если выполняется неравенство –1<f ‘(x)<0, то корень уравнения всегда находится на отрезке [xk, xk+1] и условие окончания итерационного процесса имеет вид неравенства |xk+1-xk|<.
П
ереход
от уравнения F(х)=0
к уравнению f(х)
можно осуществить следующим образом.
Умножим левую и правую части уравнения
F(х)=0
на произвольную константу h
и добавим к обеим частям уравнения
неизвестное х.
Эти действия не изменяют корней уравнения:
h
F(х)
+х=О*h+х;
h F(х)
+х=х;
Обозначив
f(х)
=h
f(х)
+х,
перейдем к уравнению х=f(х).
Величину h
желательно выбрать такой, чтобы
выполнялось неравенство –1<f
'(х)<0
на отрезке, содержащем корень уравнения.
Исходными
данными для программы, соответствующей
приведенному алгоритму, является грубое
значение корня и точность вычисления.
Условием выхода из итерационного
процесса является неравенство
|хk+1-хk]<,
при этом искомым значением является
хk+1.
