Floating point overflow - C (СИ)
Формулировка задачи:
число написанных мной программ на С перевалило 100 но с таким впервые
Непонятное исключение на операторе step=1./N - выдает переполнение и исключение
Этот код в -h файле. Никаких одноименных переменных N нигде кроме как здесь нет.
В отладчике видно N=50
Среда С++ Builder. Кстати Builder отличается свойством -если поменять пару операторов и не сделать Rebuild а нажать на кнопку Run -то может быть сбой в правильной проге.
int CL2(float R,float *HX, float * HY) { int N,i,j,k,kmax=0; float hx,hy,step; N=50;step=1./N; for (i=0;i<N+1;i++) { hy=i*step; for (j=0;j<N+1;j++) { hx=j*step; k=CL21(R,hx,hy); if(k>kmax) {kmax=k; *HX=hx; *HY=hy;}; } } k=CL21(R,*HX,* HY); return kmax; }
Решение задачи: «Floating point overflow»
textual
Листинг программы
int CL2(float R,float *HX, float * HY) { int N, i, j, k, kmax = 0; float hx, hy, step; N = 50; step = 1. / N; for (i = 0; i < N + 1; i++) { hy = i * step; for (j = 0; j < N + 1; j++) { hx = j * step; k = CL21 (R, hx, hy); if(k > kmax) { kmax = k; *HX = hx; *HY = hy; } } } k = CL21(R, *HX, *HY); return kmax; }
Объяснение кода листинга программы
- Объявлены пять переменных: N, i, j, k, kmax.
- N = 50;
- Определён шаг (step) равный 1.0 / N;
- Первый цикл for (i = 0; i < N + 1; i++) используется для создания значений hy от 0 до 1.0 с шагом 0.01.
- Второй цикл for (j = 0; j < N + 1; j++) используется для создания значений hx от 0 до 1.0 с шагом 0.01.
- Внутри второго цикла вызывается функция CL21(R, hx, hy);
- Результат функции CL21 сравнивается с kmax;
- Если результат функции CL21 больше kmax, то обновляются значения kmax, hx и hy;
- Второй цикл завершается;
- Вызывается функция CL21(R, HX, HY);
- Функция возвращает kmax;
- Возвращаемое значение функции присваивается k.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д