반응형

문제). 
구조체를 이용하여 두 복소수 (2.50 +2.60i), (3.30-2.50i)의 더하기, 빼기, 곱하기, 및 절대값을 구하는 함수를 만들고 계산의 예를 출력하는 프로그램을 작성하시오.

 

 

실행 예1).

 

입력)

없음

 

결과).

더하기
( 2.5+2.6i ) + ( -3.3-2.5i ) = ( -0.8+0.1i )
빼기
( 2.5+2.6i ) - ( -3.3-2.5i ) = ( 5.8+5.1i )
곱하기
( 2.5+2.6i ) - ( -3.3-2.5i ) = ( -1.75-14.83i )
절대값
|( 2.5+2.6i )| = 3.60694
|( -3.3-2.5i )| = 4.14005

 

 

 

 

 

 

 

 

 

 

 


답은 아래에... ↓

 

 

 

 

 

 

 


 

 

 

 

 

스스로 풀어보시고... ↓

 

 

 

 

 

 


 

 

 

 

 

 

아래 답과 비교해보세요. ↓

 

 

 

 

 

 


프로그램 소스

#include <stdio.h>
#include <math.h>

struct complex 
{
    double real;
    double image;
};


void print_complex(const struct complex *cl)
{
    if(cl->real == 0.0 && cl->image == 0.0) {
        printf("0");
    } else if(cl->real == 0) {
        printf("( %lgi )", cl->image);
    } else if(cl->image == 0){
        printf("( %lg )", cl->real);
    } else {
        printf("( %lg%+lgi )", cl->real, cl->image);
    }
}

void plus_complex(const struct complex *c1, const struct complex *c2)
{
    struct complex result; 
    
    result.real = c1->real + c2->real;
    result.image = c1->image + c2->image;

    print_complex(c1);
    printf(" + ");
    print_complex(c2);
    printf(" = ");
    print_complex(&result);
    printf("\n");
}

void minus_complex(const struct complex *c1, const struct complex *c2)
{
    struct complex result; 
    
    result.real = c1->real - c2->real;
    result.image = c1->image - c2->image;
    
    print_complex(c1);
    printf(" - ");
    print_complex(c2);
    printf(" = ");
    print_complex(&result); 
    printf("\n");
}

void multiple_complex(const struct complex *c1, const struct complex *c2)
{
    struct complex result;
    
    result.real = c1->real * c2->real + c1->image * c2->image * -1.0;
    result.image = c1->real * c2->image + c1->image * c2->real;
    
    print_complex(c1);
    printf(" - ");
    print_complex(c2);
    printf(" = ");
    print_complex(&result); 
    printf("\n");
}

void abs_complex(const struct complex *c)
{
    double value = sqrt(c->real * c->real + c->image * c->image);
    
    printf("|");
    print_complex(c);
    printf("| = %lg\n", value);
}

int main(int argc, char **argv)
{
    struct complex c1 = {2.5, 2.6}, c2 = {-3.3, -2.5};

    printf("더하기\n");
    plus_complex(&c1, &c2);
    
    printf("빼기\n");
    minus_complex(&c1, &c2);
    
    printf("곱하기\n");
    multiple_complex(&c1, &c2);
    
    printf("절대값\n");
    abs_complex(&c1);
    abs_complex(&c2);
    
    return 0;
}

 

프로그램소스

complex_sample.c
0.00MB

 

 

 

반응형
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,