#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPSILON 0.00000001
static int compare(double num1, double num2, double error)
{
if((fabs(num1
- num2
) < EPSILON
- error
) || (fabs(num1
- num2
+ error
) < EPSILON
+ error
)) return 1;
else
return 0;
}
static int compare2(double num1, double num2, double error)
{
if(fabs(num1
- num2
) <= error
) return 1;
else
return 0;
}
static int areEqual(const double *x, int size, double error)
{
int i;
for (i = 0; i < size - 1; i++)
if (!compare2(x[i], x[i + 1], error))
return 0;
return 1;
}
int main(int argc, char **argv)
{
double tab[] = {9.2, 9.7, 9.3, 9.6, 9.4, 10.0, 9.1, 9.7};
double error = 0.8;
const int N = 10;
printf("%d\n", areEqual
(tab
, N
, error
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KCiNkZWZpbmUgRVBTSUxPTiAwLjAwMDAwMDAxCgpzdGF0aWMgaW50IGNvbXBhcmUoZG91YmxlIG51bTEsIGRvdWJsZSBudW0yLCBkb3VibGUgZXJyb3IpCnsKICAgIGlmKChmYWJzKG51bTEgLSBudW0yKSA8IEVQU0lMT04gLSBlcnJvcikgfHwgKGZhYnMobnVtMSAtIG51bTIgKyBlcnJvcikgPCBFUFNJTE9OICsgZXJyb3IpKQogICAgICAgIHJldHVybiAxOwogICAgZWxzZQogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW50IGNvbXBhcmUyKGRvdWJsZSBudW0xLCBkb3VibGUgbnVtMiwgZG91YmxlIGVycm9yKQp7CiAgICBpZihmYWJzKG51bTEgLSBudW0yKSA8PSBlcnJvcikKICAgICAgICByZXR1cm4gMTsKICAgIGVsc2UKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGludCBhcmVFcXVhbChjb25zdCBkb3VibGUgKngsIGludCBzaXplLCBkb3VibGUgZXJyb3IpCnsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IHNpemUgLSAxOyBpKyspCiAgICAgICAgaWYgKCFjb21wYXJlMih4W2ldLCB4W2kgKyAxXSwgZXJyb3IpKQogICAgICAgICAgICByZXR1cm4gMDsKICAgIHJldHVybiAxOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKCiAgICBkb3VibGUgdGFiW10gPSB7OS4yLCA5LjcsIDkuMywgOS42LCA5LjQsIDEwLjAsIDkuMSwgOS43fTsKICAgIGRvdWJsZSBlcnJvciA9IDAuODsKICAgIGNvbnN0IGludCBOID0gMTA7CgogICAgcHJpbnRmKCIlZFxuIiwgYXJlRXF1YWwodGFiLCBOLCBlcnJvcikpOwoKCiAgICByZXR1cm4gMDsKfQo=