반응형

프로그래밍 215

C언어 에라스토테네스의 체 알고리즘

그리스의 수학자.천문학자.지리학자. 소수를 발견하는 방법으로서 에라스토테네스의 체(코스키콘)를 고안하고, 해시계로 지구 둘레의 길이를 처음으로 계산한사람. 지리상의 위치를 위도. 경도로 표시한 것은 그가 처음인것으로 알려져있다. -두산백과- 알로리즘을 짜다보면 소수, 약수,최대공약수 등등 익숙하지만 난감한 문제에 봉착할때가 많다. 수학파트에서 살펴본 공약수의판별을 위해 유클리드의 호제법을 알아야하는 것 처럼 말이다. 에라스토테네스의 체는 말그대로 체(고운가루는 통과 시킨다) 고운가루는 소수가아닌수이다. 알고리즘으로 살펴보자. 입력을 받은 수까지의 소수를 출력시켜준다. 배열을 생성하여 첨자찾으려는 수로 인식하고 배열의 값은 1로 초기화한다. 그리고 2의 배수부터 4,6,8,10.... 3의배수 6,9,12..

클래스 객체와 포인터 그리고 다형성 C++

C++에서 객체의 의미와 클래스타입의 포인터가 갖는 의미 그리고 다형성에 대해서 살펴보도록하자. 다음은 상속의 개념을 간략화한 그림이다. (멤버변수,함수) (클래스) ㅁ ----------- ㅁ; 이런 선언시 호출되는 ㅁ도A 클래스의 것이다. 어떻게 된일인가. A객체포인터로 C를 가르키지말고 차라리 A를 가르키는거나 무슨차이가 있는 것인가? 그렇다 차이가없다. ㅁ

프로그래밍/cpp 2013.05.09

배열과 문자열의관계 C언어

C언어는 문자를 배열로 다룬다. 문자열은 말그대로 문자들의 나열이다. 이곳에서 주로 다룰 내용은 기초적인 내용보다는, 공부를 해나가면서 상식적(자연스럽게)으로 이해하기 힘든내용을 요약정리해두겠다. 배열의 기본 문법은 안다는 전제하에 설명을 하겠다. 배열로 문자열를 다루는 법 일반적인 설명보다는, 예를 들어설명하겠다. char a='a'; // 문자를 다루는 '따옴표다 문제없이 a변수에 a가 입력된다. char a="a"; // 에러가난다 a를 "로묶어놨기때문에 문자열로 인식한다. 이상태에서에러가 안나게 고치려면? char*a="a"// 문자열로 인식하고 에러가 안 난다. 그럼 왜 포인터로 선언하면 에러가 안나는걸까. C에서는 String형이 없다. 위와같이 char 형이다. 그래서 C에서는 문자열 인식 ..

C언어 [Factorial]팩토리얼 알고리즘

팩토리얼을 C언어로 표현해보자. 0!=1이다. 이문제는 수학적 정의이다. 우리가 어떤수의 0제곱수는 1이라고 정의하는 것과 동일한 이치이다. 여기선 자세히 설명하지 않겠다. 우리가 지금 중요하게 다루는건수학적 정의보다는 어떤 식을 프로그램상으로 표현하는 방법에 대해서 공부하는 것이다. 힌트를 보려면 아래를 펼치면 된다. 먼저 원칙을 정하자 1.포맷을 맞추자 어떤 식을 표현하기위해선 여러변수들의 복합적인 작용이 있기때문에 틀을 정하지않고 생각하려면 한계에 다다른다. 그러므로 위 실행결과를 보고 그에 맞는 포맷(큰 틀)을 만들자 #include int main(void) { printf("%d! = %d", n, 결과); } 2. 위 실행결과에 맞는 틀을 갖춰졌다. 이젠 하나식 분석해보자. - 먼저 결과값을..

C언어 nCr 조합 알고리즘

위공식은 조합의 일반식을 점화식으로 나타낸 공식이다. 이 공식을 점화식으로 바꾼 것 뿐이다. 점화식이나 조합에대해서 잘 모른다면 그냥 맨처음 공식을 알고리즘으로 표현 하길 바란다. 우리는 간단히 조합을 나열하는 알고리즘을 만들 것이다. 결과 간단한 듯 보이지만, 몇가지 생각해볼 부분이있다. 우리는 그런 부분에 초점을 마추며 실력을 쌓아가자. 관련글 2012/12/06 - [프로그래밍/알고리즘] - C언어 알고리즘[Factorial]팩토리얼

반응형