在我的C代码中,它包含多个源文件和标题,我必须在我的一个函数中使用fabs
。但每次我使用fabs
时,它只返回一个等于1的整数。
我发现这里有一篇帖子谈论(其他网站上没有帖子),但答案对我来说并不对应。答案是将数学库与-lm
联系起来,但我已经这样做了,包括数学,但我也做了......
所以我不明白为什么它会返回1并且它实际上让我失去了实习机会,因为它对整个代码来说都是一个重要的功能。
这是我的功能以及标题polynome.h
和maths_jauge.h
#include "maths_jauge.h"
double newtonMethode(double *poly, double valeur, int degre, double x) {
double scalaire[1];
scalaire[0] = -valeur;
double *polyInter = malloc((degre + 1) * sizeof(double));
additionPoly(degre, poly, 0, scalaire, polyInter);
free(polyInter);
int degreDerive = degre - 1;
double *derive = malloc((degreDerive) * sizeof(double));
derivePoly(degre, poly, derive);
while (fabs(evalPoly(x, degre, poly) - valeur) > 0.001) {
x -= evalPoly(x, degre, polyInter) / evalPoly(x, degreDerive, derive);
}
free(derive);
return x;
}
加入maths_jauge.h
:
#include <stdlib.h>
#include <string.h>
#include "polynome.h"
加入polynome.h
:
#include <math.h>
这是我的makefile:
CC = gcc
CFLAGS = -Wall -g
LDFLAGS = -lm
all : main.o polynome.o maths_jauge.o
$(CC) $^ -o main $(LDFLAGS)
main.o : main.c polynome.h
$(CC) -c $< -o $@ $(CFLAGS)
polynome.o : polynome.c
$(CC) -c $< -o $@ $(CFLAGS)
maths_jauge.o : maths_jauge.c
$(CC) -c $< -o $@ $(CFLAGS)
.PHONY : clean mrproper
clean :
rm -f *.o
mrproper : clean
rm -f main
答案 0 :(得分:0)
以同样的方式重写代码,所以我仍然不知道为什么会这样做。
感谢。
这是重新编写的代码,没有错误,人们突出显示:
double newtonMethode(double *poly, double valeur, int degre, double x) {
double scalaire[1];
scalaire[0] = -valeur;
int i = 0;
double *polyInter = malloc((degre + 1) * sizeof(double));
additionPoly(degre, poly, 0, scalaire, polyInter);
int degreDerive = degre - 1;
double *derive = malloc((degreDerive + 1) * sizeof(double));
derivePoly(degre, poly, derive);
while (fabs(evalPoly(x, degre, poly) - valeur) > 0.000001) {
x -= evalPoly(x, degre, polyInter) / evalPoly(x, degreDerive, derive);
}
free(polyInter);
free(derive);
return x;
}