|
테스트도 안해보고 올렸더니...버그가 많군요.
죄송...
테스트해 보고 다시 올려 드립니다.
#include<stdio.h>
#define STOP_OPER '\n'
void ex(int S_Real, int S_Imag, int* D_Real, int* D_Imag, char Op);
int main(void)
{
int i;
int ComplexCnt;
int tmpReal, tmpImag;
int Real,Imag;
int Oper;
Real = 0;
Imag = 0;
Oper = STOP_OPER;
printf("입력할 복소수의 갯수는?:");
scanf("%d",&ComplexCnt);
printf("복소수를 입력하세요.(예:2 5)\n");
for(i=0; i<ComplexCnt; i++)
{
printf("복소수 %d: ",i);
scanf("%d %d", &tmpReal, &tmpImag);
ex(tmpReal, tmpImag, &Real, &Imag, Oper);
printf("\n%d %d, %d %d",tmpReal,tmpImag,Real,Imag);
if(i<ComplexCnt-1)
{
printf("연산자(+,-,*,/): ");
scanf("%s", &Oper);
}
else Oper = STOP_OPER;
}
printf("\n연산한 결과값은: %d %di", Real, Imag);
return 0;
}
void ex(int S_Real, int S_Imag, int* D_Real, int* D_Imag, char Op)
{
int R,I;
R = *D_Real;
I = *D_Imag;
switch(Op)
{
case '+' :
*D_Real += S_Real;
*D_Imag += S_Imag;
break;
case '-' :
*D_Real -= S_Real;
*D_Imag -= S_Imag;
break;
case '*' :
*D_Real = R * S_Real - I * S_Imag;
*D_Imag = I * S_Real + R * S_Imag;
break;
case '/' :
*D_Real = (R * S_Real + I * S_Imag)/(S_Real * S_Real + S_Imag * S_Imag);
*D_Imag = (I * S_Real - R * S_Imag)/(S_Real * S_Real + S_Imag * S_Imag);
break;
default :
*D_Real = S_Real;
*D_Imag = S_Imag;
break;
}
}
궁금해서죽을꺼같아 님이 쓰신 글 :
: 님 거마버여~ ^^* 그런데 님이 해주신거 곱셈 나눗셈을 지우믄 에러가 10개에서 2개로 줄고
: 나머지 수정하면 실행은 되는데여...초기값Real = 0; Imag = 0; 이렇게 설정 하셨죠?
: 결과는 무조건 0 0으루만 나오네여~
: 그런데여 제가 하는건 복소수입력을 일단 쭉받고나서 연산값 입력을 쭉받아서 하는거거든요
: 그래서 미리 받은 값들을 배열을 이용해야 할꺼같아요
: 암튼 님이 해주신거를 토대로 궁리 중입니다`~ ㅋㅋ (아휴~ 힘들어~~~)
: 기한이 급한 관계로 약간의 조언을 더 기다립니다~~ 수고요~
:
:
: #include<stdio.h>
: #define STOP_OPER '\n'
:
:
:
: main()
: {
: int ComplexCnt;
: int Real,Imag;
: char Oper;
:
: int i;
:
: int val[10],val2[10];
: char Op[10];
:
:
:
: printf("입력할 복소수의 갯수는?:");
: scanf("%d",&ComplexCnt);
: printf("복소수를 입력하세요.(예:2 5)\n");
: for(i=0; i<ComplexCnt; i++)
: {
: printf("복소수 %d: ");
: scanf("%d %d", &Real, &Imag);
: val[i]=Real;
: val2[i]=Imag;
: }
:
:
:
: printf("연산자(+,-,*,/): ");
: for(i=0;i < (ComplexCnt-1);i++)
: {
:
: scanf("%c", &Oper);
: Op[i]=Oper;
:
: switch(Oper)
: {
:
: case '+' :
: val[i] += val[i+1];
: val2[i] += val2[i+1];
: break;
: case '-' :
: val[i] -= val[i+1];
: val2[i] -= val2[i+1];
: break;
:
: default : break;
: }
: }
:
:
:
:
: printf("\n연산한 결과값은: %d %di", val, val2);
: return 0;
: }
:
:
|