연재 완료/C Lang 예제코드 모음

C언어 함수 실습문제 풀이 CH7 (3,4) (구의 부피와 겉넓이, 헤론의 공식)

라이피 (Lypi) 2018. 5. 17. 23:25
반응형

구의 부피와 겉넓이를 구하는 함수 (구의 부피는, 구의 겉넓이는  )

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

#define PI 3.14

double ball_volume(float r);
double ball_surface(float r);
double ball_volume_to_surface(double r);

int main()
{
	float r;
	printf("구의 반지름을 입력하세요 : "); scanf_s("%f", &r);
	printf("반지름이 %.2f일 때 구의 부피는 %.2f 입니다.\n", r, ball_volume(r));
	printf("반지름이 %.2f일 때 구의 겉넓이는 %.2f 입니다. \n", r, ball_surface(r));
	printf("부피가 %.2f일 때, 겉넓이는 %.2f 입니다. \n.", ball_volume(r), (ball_volume_to_surface(ball_volume(r))));
}

//구의 부피 구하는 식
double ball_volume(float r)
{
	return (4.0) / (3.0) * (PI) * r * r * r;
}

//구의 겉넓이 구하는 식
double ball_surface(float r)
{
	return 4.0 * PI * r * r;
}

//부피를 겉넓이로 환산하는 식
double ball_volume_to_surface(double volume)
{
	//r을 모르니 r을 구해야했다...
	double r = pow(volume * (3 / 4) / (PI), 1 / 3);

	return volume * 3 / r;
}


//구의 부피와 겉넓이에 대한 부분은 일단 패스



헤론의 공식을 이용하여 삼각형의 면적을 구하는 함수

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

double tri_area_heron(double a, double b, double c);

int main()
{
	double a, b, c;
	double area;

	printf("헤론의 공식을 이용해서 삼각형의 넓이를 구합니다. \n");
	printf("첫번째 변의 길이를 입력하세요 : "); scanf_s("%lf", &a);
	printf("두번째 변의 길이를 입력하세요 : "); scanf_s("%lf", &b);
	printf("세번째 변의 길이를 입력하세요 : "); scanf_s("%lf", &c);

	area = tri_area_heron(a, b, c);

	if (area != 0) {
		printf("변의 길이가 %.2f, %.2f, %.2f인 삼각형의 넓이는 %.2f입니다. \n",a,b,c,area);
	}

	return 0;

}

double tri_area_heron(double a, double b, double c)
{
	//제일 긴 변을 확인
	double max = (a>b) ? (a > c ? a : c) : (b > c ? b : c);

	//헤론의 공식에서 기본적으로 쓰이는 s를 구함.
	double s = (a + b + c) / 2;

	// a>b>c일때 a < b+c 일때만 삼각형이 성립됨
	if (max == a && a >= b + c || max == b && b >= a + c || max == c && c >= a + b) {	
		printf("삼각형이 성립되지 않습니다. \n");
		return 0;
	}

	//pow는 제곱을 구하는 함수인데 1/2 제곱은 루트와 같음.
	return pow(s*(s - a)*(s - b)*(s - c), 1 / 2.0);
}


//헤론의 공식



반응형