ТОР 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); При таком задании строки нет необходимости рассчитывать число символов Массив указателей на строки позволяет задавать сразу несколько строк: 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]); На экран будет выведено сообщение: Славное море – священный Байкал!
Не нашли, что искали? Воспользуйтесь поиском:
|