#include
#include
#define P_MAX 10
#define ITR_MAX 10000
#define E_MIN 0.1
#define X_MIN -100
#define X_MAX 100
#define f(a,b,x) (a*x+b)
double random(int max,unsigned long* idum);
int main()
{
int i;
double a1,a2,b1,b2;
double x,y1,y2;
unsigned long idum = time(NULL);
a1 = random(P_MAX,&idum);
b1 = random(P_MAX,&idum);
a2 = random(P_MAX,&idum);
b2 = random(P_MAX,&idum);
printf("直線の定義: \n\t(a:傾き,b:切片)\n");
printf("直線1:a1=%.2lf,b1=%.2lf\n",a1,b1);
printf("直線2:a2=%.2lf,b2=%.2lf\n",a2,b2);
printf("\n**反復開始\n");
for(i=0;i<ITR_MAX;i++){
x = X_MIN + i*(double)(X_MAX-X_MIN)/(double)ITR_MAX;
y1 = f(x,a1,b1);
y2 = f(x,a2,b2);
if(fabs(y1-y2) < E_MIN){
printf(" 交点:(%.2lf,%.2lf)\n",x,y1);
break;
}
}
return 0;
}
double random(int max,unsigned long* idum)
{
*idum=(*idum)*1103515245 + 12345;
return (max * ((double)(*idum/65536 % 32768) / (double)32767));
}
|