|
for문에 다음과 같이 되어 있어서 그럴겁니다.
scanf("%d %d",&b,&c);
ex(&b,&c);
ex함수에서 b,c값이 변경되지만...
다시 scanf에서 그 값을 입력값으로 변경하는군요.
그 결과....맨 마지막 값만 나올겁니다.
전체적으로 변경하시는 건 어떻게 생각하신는지요...
꼭 어떤것을 이용해야 한다는 규칙이 있나요?
대충 제 맘대로 변경했는데...
도움이 될려나 모르겠네요..
[변경 소스]-------------------------------
#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 ComplexCnt;
int Real,Imag;
int Oper;
int i;
int tmpReal, tmpImag;
Real = 0;
Imag = 0;
printf("입력할 복소수의 갯수는?:");
scanf("%d",&ComplexCnt);
printf("복소수를 입력하세요.(예:2 5)\n");
for(i=0; i<ComplexCnt; i++)
{
printf("복소수 %d: ");
scanf("%d %d", &tmpReal, &tmpImag);
if(i < Complex-1)
{
printf("연산자(+,-,*,/): ");
scanf("%c", &Oper);
}
else Oper = STOP_OPER;
ex( tmpReal, tmpImag, &Real, &Imag, Opper);
}
printf("\n연산한 결과값은: %d %di", Real, Imag);
return 0;
}
void ex(int S_Real, int S_Imag, int* D_Real, int* D_Imag, char Op)
{
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 = D_Real*S_Real - D_Imag*S_Imag;
D_Imag = D_Imag*S_Real + D_Real*S_Imag;
break;
case '/' :
D_Real = (D_Real*S_Real + D_Imag*S_Imag)/(S_Real*S_Real + S_Imag*S_Imag);
D_Imag = (D_Imag*S_Real - D_Real*S_Imag)/(S_Real*S_Real + S_Imag*S_Imag);
break;
default : break;
}
}
----------------------------------------------
궁그메끄츤오딘가 님이 쓰신 글 :
: 복소수 연산 이거든여 실수부와 허수부의 값을 1.몇개 받을지 스캔하고
: 2.갯수만큼 반복으로 스캔하고
: 3.받은 값들의 연산(+,-,*,/)을 받은개수-(1개)입력하여
: 4출력
: 하는건데여..밑에 제가 짠거는 ..많이 어설프고..참...민망함니다..
:
: 주함수에서 입력값이 바뀔때의 값들이 부함수에서 연산하는거에 걸리지 않고
:
: 무조건 맨마지막값만이 부함수 연산이 됨니다..(포인터가 왜 짜증나는지 이젠 알것같아여)
:
: 고수님들의 작은 조언도 큰도움이 될듯싶습니다...^^
:
:
:
:
:
:
: #include<stdio.h>
: #define stop '\n'
:
: void ex(int* pb, int* pc);
:
: int main(void)
: {
: int i,a,b,c,count=0;
: char f,k,val,g,h;
: //val[i-1]=0;
: printf("입력할 복소수의 갯수는?:");
: scanf("%d",&a); //몇개받을지 입력..
: for(i=1; i<=a; i++){ //받은 개수많큼 반복하여 값을 입력
: scanf("%d %d",&b,&c);
: ex(&b,&c);
:
: //b=val[i];
: //c=val[i];
: //val[i-1] j=val[i];
: }
: printf("수행할 연산자를 차례대로 적으십시오\n");
: getchar(); //연산자를 차례로 받아야하는데..
:
:
: getchar();
: printf("연산한 결과값은: %d %di",b,c); //최종 연산한 결과출력..
: return 0;
:
: }
: //여기까지는 주함수임니다
:
: void ex(int *pb, int *pc)
: {
: char k;
: int count=0,temp1,temp2;
: while((k = getchar()) != stop){ //받은 연산자..
: count++;
: }
: temp1 = *pb;
: *pb k= temp1;
: temp2 = *pc;
: *pc k= temp2 ;
: }
: //이건 부함수구여..
|