Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C/C++]floating point error:domain


Автор: Positiv 18.12.2008, 20:20
Помогите найти ошибку. Программа не выводит результат, а выводит вот это: floating point error:domain.
Программа считает функцию:
Y==Funct(s,t)+max( Funct^2(s-t,s*t),Funct^4(s-t,s+t)) + Funct(1,1);
Где Funct(a,b)==(b^2+1)/a + (a^2+1)/b - ((a-b)^3)
Код

#include <stdio.h>
#include <conio.h>
#include <math.h>

#ifdef __cplusplus
  int max (int value1, int value2);
  int max(int value1, int value2)
  {
     return ( (value1 > value2) ? value1 : value2);
  }
#endif
    float s;
    float t;
    float Y;

float Funct(float a,float b)
{
     float H;
     H=(b*b+1)/a+(a*a+1)/b-pow(a-b,3);
     return (H);
}

float vichislenie()
{
    Y==Funct(s,t)+max(pow(Funct(s-t,s*t),2),pow(Funct(s-t,s+t),4)) + Funct(1,1) ;
    return (Y);
}
void main()
{
    printf("Vvedite s,t\n");
    scanf("%i %i",&s,&t);
    vichislenie();
    printf("Y: %i",Y);
    getch();
}

Автор: creatorcode 18.12.2008, 20:54
Вместо == поставьте =

Автор: Positiv 18.12.2008, 21:14
Попробывал вметсо == поставить =. Borland C пишет теперь floating point error:overflow
CodeBlocks же ошибки не выдает, но значение функции выдает  0. 
int max (int value1, int value2) исправлял на   float  max (float value1, float value2), результат такой же

Автор: creatorcode 18.12.2008, 23:54
Замените:
Код

    scanf("%i %i",&s,&t);
    vichislenie();
    printf("Y: %i",Y);

на
Код

    scanf("%f %f",&s,&t);
    vichislenie();
    printf("Y: %f",Y);

А max, действительно должен быть определен так:
Код

float  max (float value1, float value2)

Автор: Positiv 19.12.2008, 13:22
creatorcode, спасибо, все работает. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)