因数分解プログラム(C言語)について(2)
つづきです
/*因数分解できるか判断する関数*/
int judge(int *a,int *b,int *c,float *D)
{
*D = (float)((*b) * (*b)) - (4 * (*a) * (*c));
if(D > 0 || D ==0){
printf("判別式は条件を満たしました。\n因数分解を行います。\n");
}
else if(D < 0){
printf("判別式はD < 0であるため、因数分解できません。\n");
exit(1);
}
return 0;
}
/*因数分解をする関数*/
int bunkai1(int *a,int *b,int *q,int *n1,int *m1,float *D)
{
*q = sqrt(*D);
*n1 = -(*b) + *q;
*m1 = 2 * (*a);
return 0;
}
int bunkai2(int *a,int *b,int *q,int *n2,int *m2,float *D)
{
*q = sqrt(*D);
*n2 = -(*b) - *q;
*m2 = 2 * (*a);
return 0;
}
/*約分を行う関数*/
int yakubun1(int *m1,int *n1,int *min1,int *flag,int *i,int *d,int *e)
{
/*最大公約数を見つける*/
if(*m1 < *n1){
*min1 = *m1;
}
else{
*min1 = *n1;
}
*flag = 0;
for(*i = min1; *i > 0; *i--){
if(*m1 % *i == 0){
if(*n1 % *i == 0){
*flag = 1;
break;
}
}
}
つづく
関連URL:http://www.okweb.ne.jp/kotaeru.php3?q=474593
お礼
ありがとうございます。