Data_Structure/作業/unit2/main.c
2025-01-20 21:30:53 +08:00

60 lines
1.2 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//#define f(x) (x*x*x-2*x*x-x+2)
//#define f(x) (x*x-100)
#define f(x) (3*x*x*x*x+9*x*x*x-198*x*x+156*x+360)
void binary_search ( int *ans){
int count = 1000 , i=0;
double mid , lower=-15 , upper=20;
while ((f(mid)) != 0 && i < count ) {
mid = (lower + upper) / 2.0;
printf("#%d\t[%f,%f]\t解=%f\n",i+1,lower,upper,mid);
if (fabs(f(mid)) == 0) {
break;
}
i++;
if ( f(mid) * f(lower) < 0) {
upper = mid;
} else {
lower = mid;
}
}*ans = mid;
}
void Exhaustive(int a, int b, int *ans, int *count) {
*count = 0;
int i;
for (i = a; i <= b; i++) {
if (f(i) == 0) {
ans[*count] = i;
(*count)++;
}
}
}
int main() {
int i , x , lower=-200 , upper=200 ;
int ans[10];
int *count;
Exhaustive(lower,upper,ans,&count);
if (count > 0) {
printf("*** 解多項式之整數根 ***\n");
printf("\n方程式p(x)= 3^4+9x^3-198x^2+156+360\n");
printf("\n解得整數根為");
for (i = 0; i < count; i++) {
printf(" %d ", ans[i]);
}
} else {
printf("在給定範圍內沒有找到整數解。\n");
}
return 0;
}