Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Float x, y, c, fx, fy, fc;




fx = (*f)(x);

fy = (*f)(y);

if (fx * fy > 0.0)

{

puts(“Неверный интервал!”);

return -1; // аварийное завершение программы

}

Do

{

c = (y – x)/2.0; // центр интервала

fc = (*f)(c); // значение функции в нем

if (fc * fx > 0.0)

{

x = c;

fx = fc;

}

Else

{

y = c;

fy = fc;

}

}

while ((fc!=0.0) && (fabs(y-x) > eps));

Return c;

}

 

Полный вид программы:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <math.h>

typedef float (*point_func)(float); // новый тип данных -
//
указатель на функцию

// вещественного типа

Float test_func(float x);

Float root(point_func f, float a, float b, float eps);

Int main()

{

Float left, right, tochn, koren;

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 0;

}

Float test_func(float x)

{

return x*x–1.0;

}

Float root(point_func f, float a, float b, float eps)

{

Float x, y, c, fx, fy, fc;

fx = (*f)(x);

fy = (*f)(y);

if (fx * fy > 0.0)

{

puts(“Неверный интервал!”;

return -1; // аварийное завершение программы

}

Do

{

c = (y–x)/2.0; // центр интервала

fc = (*f)(c); // значение функции в нем

if (fc * fx > 0.0)

{

x = c;

fx = fc;

}

Else

{

y = c;

fy = fc;

}

}

while ((fc!=0.0) && (fabs(y-x) > eps));

Return c;

}

Работа программы:

левая граница интервала:0.0

правая граница интервала:2.0

точность вычислений:1.0e-5

 

корень функции в заданном интервале = 1.00000

Указатели и строки

Указатели во многом облегчают работу со строками. Строка – это одномерный массив символов. Поэтому указатель на строку эквивалентен имени этой строки и содержит адрес ее начального символа:

char *c_ptr;

char string[10] = “язык Си”;

c_ptr = string;

Более того, если строка задана как

string = “язык Си”;

то это будет эквивалентно оператору присваивания:

c_ptr = “язык Си”;

Мы присвоили указателю на данные символьного типа значение строковой константы. Другими словами, мы поместили в указатель адрес начального символа строки “язык Си”. Остальные символы этой строки будут расположены в последующих ячейках оперативной памяти.

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

char *message;

message = “Славное море – священный Байкал!”;

Puts(message);

printf(“\n%s”, message);

При таком задании строки нет необходимости рассчитывать число символов
в ней и добавлять в ее конец нулевой символ‘\0’ – все это выполнится автоматически. Кроме того, сама строка не помещается в указатель: это невозможно сделать, так как указатель – это переменная. Указатель в этом случае будет только содержать адрес первого символа строки, записанной в неизвестной нам области оперативной памяти компьютера.

Массив указателей на строки позволяет задавать сразу несколько строк:

char *message[4];

message[0] = “Славное ”;

message[1] = “море ”;

message[2] = “- ”;

message[3] = “священный Байкал!”;

Элементами этого массива являются адреса первых символов строк. С ними можно работать как с элементами обычных символьных массивов, например выводить их на экран:

printf(“\n%s%s%s%s”, message[0], message[1], message[2], message[3]);

На экран будет выведено сообщение:

Славное море – священный Байкал!

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных