私はプログラミングの完全な初心者であり、複素数から R と theta を見つけ、それがどの象限にあるかに応じて if ステートメントを使用して適切なアクションを実行するだけのタスクがあります。
すなわち; 象限 1 と 2 では計算されたシータを使用し、象限 3 では計算されたシータから 180 度を減算し、象限 4 では計算されたシータに 180 度を加算します。
1+1j を入力すると、正しい R が得られますが、シータが正しくありません。私は theta = atan(b/a); を使用しています。
#include <stdio.h>
int main()
{
float a, b, r, j, theta, thetaquadrant3, thetaquadrant4, convert ;
j = -1;
b = b*-1;
thetaquadrant3 = theta - 180;
thetaquadrant4 = theta + 180;
printf ("Please enter intput A and B in the form of a+bj\n");
printf ("Input A:");
scanf ("%f" , &a);
printf ("Input B:");
scanf ("%f" , &b);
if ((a>=0.0) && (b >= 0.0))
{
//take no action as the calculated angle is in quadrant 1
r = sqrt (pow(a, 2) + pow(b , 2));
printf ("R=%f\n\n" , r);
theta = atan(b/a);
printf ("Theta=%f\n\n", theta );
}
if ((a<=-0.0) && (b >= 0.0))
{
//take no action as the calculated angle is in quadrant 2
r = sqrt (pow(a, 2) + pow(b , 2));
printf ("R=%f\n\n" , r);
theta = atan(b/a);
printf ("Theta=%f\n\n", theta );
}
if ((a<=-0.0) && (b <= -0.0))
{
//Quadant 3
r = sqrt (pow(a, 2) + pow(b , 2));
printf ("R=%f\n\n" , r);
theta = atan(b/a);
printf ("Theta=%f\n\n", thetaquadrant3 );
}
if ((a>=0.0) && (b <= -0.0))
{
//Quadrant 4
r = sqrt (pow(a, 2) + pow(b , 2));
printf ("R=%f\n\n" , r);
theta = atan(b/a);
printf ("Theta=%f\n\n", thetaquadrant4 );
}
// Converting back to rectangular Co-ordinates
convert = r*cos(theta) + j*r*sin (theta);
printf ("Corresponds to%f\n\n" , convert);
return 0;
}
どんな助けでも大歓迎です