Найти ближайшее к какому-нибудь целому - C (СИ)
Формулировка задачи:
Даны натуральное число n и вещественное число x. Среди чисел (exp^(cos(x^(2*k))))*sin(x^(3*k)) (k = 1, 2, ..., n) найти ближайшее к какому-нибудь целому.
Решение задачи: «Найти ближайшее к какому-нибудь целому»
textual
Листинг программы
#include <stdio.h> #include <math.h> #define M_E 2.71828182845904523536 double res(int m, double y) { return pow(M_E,cos(pow(y,2*m)))*sin(pow(y,3*m)); } int main() { int k,n,left,kmin; double x, cur, dmin, min = 1.; printf("x = "); scanf("%lf",&x); printf("n = "); scanf("%d",&n); printf(" n res left right dleft dright\n"); printf("<br>\n"); for(k=1;k<n+1;k++) { cur = res(k,x); if(cur<0) left = (int)cur -1; else left = (int)cur; cur-left<left+1-cur ? dmin=cur-left : dmin=left+1-cur; if(dmin<min) { min = dmin; kmin = k; } printf("%3d %10.3f %7d %7d %10.3f %10.3f\n", k, cur, left, left+1, cur-left, left+1-cur); } printf("Minimum distance min = %1.3f for k = %d", min, kmin); flushall(); getchar(); return 0; }
Объяснение кода листинга программы
- В функции
res
используются математические функцииcos
иsin
, а также функцияpow
для возведения в степень. Результат вычисления функцииres
выводится на экран. - В функции
main
программа запрашивает у пользователя значения переменныхx
иn
с помощью функцииscanf
. - Затем программа выводит таблицу с расстояниями до корней функции
res
для различных значенийn
. - В цикле
for
программа вычисляет значения функцииres
для каждого значенияn
и сохраняет минимальное расстояние до корня в переменнойmin
. - Программа выводит на экран минимальное расстояние и соответствующее значение
n
. - В конце программы вызывается функция
flushall
для очистки буфера вывода и функцияgetchar
для получения символа конца файла. - Функция
main
возвращает 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д