Float root(point_func f, float a, float b, float eps)
Float test_func(float x)
Return 0;
Float left, right, tochn, koren;
Int main()
Float root(point_func f, float a, float b, float eps);
Float test_func(float x);
Return c;
Else
X = c;
Do
Float x, y, c, fx, fy, fc;
Float root(point_func f, float a, float b, float eps)
{
fx = (*f)(x);
fy = (*f)(y);
if (fx * fy > 0.0)
{
puts(“Неверный интервал!”);
return -1; // аварийное завершение программы
}
{
c = (y – x)/2.0; // центр интервала
fc = (*f)(c); // значение функции в нем
if (fc * fx > 0.0)
{
fx = fc;
}
{
y = c;
fy = fc;
}
}
while ((fc!=0.0) && (fabs(y-x) > eps));
}
Полный вид программы:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
typedef float (*point_func)(float); // новый тип данных - // указатель на функцию
// вещественного типа
{
printf(“\n левая граница интервала:”);
scanf(“%f”, &left);
printf(“\n правая граница интервала:”);
scanf(“%f”, &right);
if (left >= right)
{
puts(“Error!”);
return -1; // аварийное завершение программы
}
printf(“\n точность вычислений:”);
scanf(“%f”, &tochn);
printf(“\n”);
koren = root(test_func, left, right, tochn);
printf(“\n корень функции в заданном интервале = %3.5f”, koren);
}
{
return x*x–1.0;
}
{
fx = (*f)(x);
fy = (*f)(y);
if (fx * fy > 0.0)
{
puts(“Неверный интервал!”;
return -1; // аварийное завершение программы
}
{
c = (y–x)/2.0; // центр интервала
fc = (*f)(c); // значение функции в нем
if (fc * fx > 0.0)
{
fx = fc;
}
{
y = c;
fy = fc;
}
}
while ((fc!=0.0) && (fabs(y-x) > eps));
}
Работа программы:
левая граница интервала:0.0
правая граница интервала:2.0
точность вычислений:1.0e-5
корень функции в заданном интервале = 1.00000
Указатели во многом облегчают работу со строками. Строка – это одномерный массив символов. Поэтому указатель на строку эквивалентен имени этой строки и содержит адрес ее начального символа:
char *c_ptr;
char string[10] = “язык Си”;
c_ptr = string;
Более того, если строка задана как:
string = “язык Си”;
то это будет эквивалентно оператору присваивания:
c_ptr = “язык Си”;
Мы присвоили указателю на данные символьного типа значение строковой константы. Другими словами, мы поместили в указатель адрес начального символа строки “язык Си”. Остальные символы этой строки будут расположены в последующих ячейках оперативной памяти.
Таким образом, любой указатель на данные символьного типа может рассматриваться как указатель на строку символов, задать которую можно оператором присваивания, ввести или вывести как обычную строку: