로그인 바로가기 하위 메뉴 바로가기 본문 바로가기

C언어를 활용한 기초컴퓨터프로그래밍

임시 이미지 최윤호 부산대학교
http://www.edwith.org/pnu-basicc/forum/1931
좋아요 243 수강생 9850

원과 사격형의 넓이를 구하는 함수가 동작하지 않고 그냥 0.00000 으로 값이 반환됩니다.

이리저리 고쳐봐도 뭐를 제가 잘못했는지 발견하지 못하겠습니다.


그리고 잘못된 값을 입력하였을 때 값을 잘못입력하였습니다라는 메시지 다음에 원의 넒이 : 0.0000 이 같이 출력되는데 이건 조건을 설정하지 않아서 인가요?

break를 입력하면 그곳에서 작동이 멈춘다고 생각해서 그대로 입력하였고 강의에도 그대로 나오길래 그렇게 작성을 하였는데 제가 잘못 이해하고 있는지 알려주세요.

ps. 그리고 이건 개인적인 궁금증인데 이전에는 함수를 만들어서 활용할 때 리턴에 바로 수식을 입력하였는데 이번에는 res에 저장하여 이 값을 출력하도록 하였는데 둘의 차이를 알고 싶습니다.


#include <stdio.h>

double get_rect();
double get_circle();

int main(void)
{
int num;
double area;

printf("1. 사격형\n2. 원\n");
printf("면적을 구할 도형 번호를 선택 : ");
scanf("%d", &num);

switch(num)
{
case 1:
area = get_rect();
break;
case 2:
area = get_circle();
break;
default:
printf("잘못된 입력입니다.\n");
break;
}

if(num == 1){
printf("사격형의 면적 : %1f\n", area);
}else{
printf("원의 면적 : %1f\n", area);
}

return 0;
}

double get_rect()
{
double w, h, res;

printf("너비와 높이 입력 : ");
scanf("%1f %1f", &w, &h);

res = w * h;

return res;
}

double get_circle()
{
double r, res;

printf("반지름 입력 : ");
scanf("%1f", &r);

res = r * r * 3.14159;

return res;
}