C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[25546] [답변] ex에서 계산된 값이 scanf에서 변경되어 ...
정성훈.해미 [sage5nor] 690 읽음    2003-05-12 11:41
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  ;
: }
: //이건 부함수구여..

+ -

관련 글 리스트
25538 저기..밑에 님들 ㄳ 함니다~^^ 그런데여.. 궁그메끄츤오딘가 595 2003/05/12
25560     ANSI C++은 자체적으로 복소수를 지원합니다. 김백일.cedar 1523 2003/05/12
25546     [답변] ex에서 계산된 값이 scanf에서 변경되어 ... 정성훈.해미 690 2003/05/12
25553             [답변] 헉!...ㅈㅅ...테스트하고 다시 올립니다.. 정성훈.해미 697 2003/05/12
25563                     [답변] 2번: 연산자 연속 입력구현... 정성훈.해미 902 2003/05/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.