Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Неопознанный математический знак в с++ (https://forum.antichat.xyz/showthread.php?t=39070)

7ion 28.04.2007 12:28

Неопознанный математический знак в с++
 
Пишу прогу по информатике на с++. есть такая функция:
Код:

void oval2(double xf, double yf)


while(yf <= 0) {
                    // simply bruteforce...

    forma= sqrt((xf-13)/a) + sqrt((yf-2)/b);
   
      yf++;
      if (forma>=1) //if point is right then add this in the table
      {
                    yf=3;
    x[4]=xf;
    y[4]=yf;
    break;
}
         
}

вызывается она так:
Код:

oval2(0,-40);
И вот в чем прикол y[4] всегда равен нулю, вне зависимости от того больше forma единицы или меньше или равна. разве такое реально?
зы: все переменные в double.

gibson 28.04.2007 12:35

у тебя начальное значение yf скока? если описано как int yf=0 то цикл не будет выполняться while(yf <= 0) потому что yf++; и сразу идет на break может я ошибаюсь))

sn0w 28.04.2007 12:54

дабл это не инт и почти никогда не равен целому числу после каких либо сложных операций. т.е. опреация dbl_Y == 0 не вернет тру если dbl_Y равен скажем 0.0001326, аппроксимируй до 0.00 0.000 0.0000 и тд, сморя какая точность нужна

sni4ok 28.04.2007 14:07

а чему равны значения a и b?

7ion 28.04.2007 14:17

yf = -40 это видно из вызова функции. a=23, b=38. я в си новичек, поэтому мог допустить ошибку.
2sn0w: а причем здесь int? тем более что я сравнивниваю больше-меньше.

sni4ok 28.04.2007 14:21

ты sqrt пытаешься из отрицательного числа брать :D

7ion 28.04.2007 14:24

меня это тоже смущает и компилятор почему-то молчит, НО. я писал аналогичную прогу на дельфи с той же формулой работает как часы.

sni4ok 28.04.2007 14:31

что значит смущает? это ошибка логики программы- и её стоит исправить, или ты из школы не усвоил, что извлекать арифметический корень можно не из отрицательных действительных чисел?

7ion 28.04.2007 14:54

2sni4ok: для чистоты эксперимента: yf = -40, и в формуле все минусы на плюсы - тоже самое => проблема не в этом.

sni4ok 28.04.2007 15:02

приведи конечный код всей программы со всеми обьявлениями.


Время: 16:10