프로그래밍[Univ]/C언어 38

[C소스] 마방진(2보다 큰 모든 정수에 가능함) / 짝수마방진 홀수마방진 겸용 /

#include // 단순히 두 수를 swap해주는 함수 void swap(int *num1,int *num2){ int temp; temp = *num1; *num1 = *num2; *num2 = temp; } // 마방진 출력함수 void print_mbj(int size, int mbj[][size]){ int i, j; for ( i = 0 ; i < size ; i++ ){ for ( j = 0 ; j < size ; j++ ){ printf("%d\t",mbj[i][j]); } printf("\n\n\n"); } } // 홀수 마방진 만드는 함수 void make_odd(int size, int mbj[][size]){ int number; int row = 0;//시작 위치 가로 세로 int..

짝수 마방진(4의 배수가 아닌 짝수)

4의 배수가 아닌 짝수의 마방진을 만드는 것은 하나의 예를 들어가면서 설명하도록 하겠다... 14차 마방진(14*14)를 예를 들어 설명하겠다. ⓐ 4의 배수가 아닌 짝수의 마방진을 만들대는 일단 size/2차 마방진을 만듭니다. > 14차 마방진을 만들고 싶다면, 이전에 7차 마방진을 만듭니다. > 이 7차 마방진은 차후에 사용할 것이니 임시로 저장을 해둔다. ⓑ 4의 배수가 아닌 짝수의 마방진을 만들기 위해서는 다음과 같은4개의 공간으로 구분하여 만들 필요가 있다. - 일단 마방진을 4부분으로 쪼갭니다. - 0~3의 숫자가 들어가는데 이것을 넣는 규칙은 다음과 같습니다. > 왼쪽 위의 마방진은 ceil(size/4)개의 3을 왼쪽부터 써넣습니다. 그외는 0으로 채웁니다. (단, ceil(size/4)..

짝수 마방진(4의 배수)

4의 배수 마방진인 홀수 마방진 다음으로 간단한 마방진이다. 다음의 과정을 따르면서 실행을 한다. ⓐ 1~16까지의 숫자를 차례대로 배열에 넣어준다. ⓑ 순차적으로 체워진 마방진을 1:2:1로 나눈다.(4의 배수이므로 무조건 다음과 같이 나눠진다) > 위의 경우에서는 1:2:1로 나눠 질 것이다. ⓒ 각각 변의 테두리에있는 1에 대한 것을 고정 시킨다. > 위의 경우는 다음과 같이 1,4,13,16을 고정 시킨다. ⓓ 마방진 내부에 있는 1:2:1에서 2부분을 각각을 고정 시킨다. > 위의 경우면 다음과 같이 6,7,10,11을 고정 시킨다. (ⓒ단계와 합친 그림) ⓔ 이제 고정 안된 부분을 각각 원점 대칭으로 한번씩 교환을 해준다. ⓕ 고정 안된 부분이 모두 한번씩 원점 대칭을 실시 할때 까지 실행....

홀수 마방진

홀수 마방진은 마방진을 만드는 것중에서 가장 간단한 형태이다. 위에서 파란원이 만들려고 하는 마방진이다.(크기 3짜리 3*3 마방진을 만든다.) 다음과 같은 과정을 따르며 마방진을 완성해간다. ⓐ 시작숫자 1을 첫번째 행, 가운데 열에 넣는다. ⓑ 숫자가 (3의 배수 + 1)일 경우는 바로 밑에 숫자를 적어준다. > 위의 경우 4또는 7이 이에 해당한다. ⓒ 다음 숫자를 오른쪽 대각선위에 적는다. > 만약, 숫자가 마방진크기를 벗어나게 되면 그 행 또는 열의 가장자리로 보낸다. (위의 경우 2의 경우 행에서 크기가 벗어나므로 맨 밑행으로 숫자를 이동시킨다.) (위의 경우 3의 경우 열이 크기에서 벗어나므로 맨 오른쪽행으로 숫자를 이동시킨다.) ⓓ 숫자가 size*size가 될때까지 숫자를 더해주면서 ⓒ의..

c언어 세미나...

1. if와 if else if 영어로 우리는 "만약에" 라고하져... if 의 문법은 다음과 같습니다. if ( 조건부 ) { 실행부 } 조건부가 맞는다면 실행부가 실행됩니다. 예를 들어, int i = 0; if ( i == 0 ) { printf("%d\n",i); } 이런 것이 메인에 있다면, i 가 0과 같다면, printf가 실행되고, 그게 아니면 if문을 건너 띄고 실행됩니다. 영어에서 if가 있다면 else도 있습니다. else는 if와 붙어서 "그렇지 않다면" 이라고하져... else의 문법은 if와 비슷합니다. if ( 조건부1 ){ 실행부1 }else if( 조건부2 ) { 실행부2 }else{ 실행부3 } 조건부1에 맞다면 실행부 1이 실행되고 조건부2에 맞다면 실행부2.. 조건부1..

[C언어] 예약어 typedef

> tepedef는 이미 사용하고 있는 자료형의 이름을 새롭게 지정할 때 사용하는 예약어이다. ex ) typedef int in typedef long lo ---------------- #define in int #define lo long 과 같은 의미를 가집니다. 하지만 이것에는 약간의 차이가 존재합니다. ex) #define PTR int * PTR ptr01, ptr02; 위와 같이 define을 통해서 int * 포인터 지정을 선언하면, 컴퓨터는 이렇게 받아 들입니다. int *ptr01, ptr02; > ptr01은 int 포인터 변수이고, ptr02는 int 변수로써 사용이 가능하게 됩니다. 이와 다르게 typedef를 사용하면 이렇게 됩니다. typedef int * PTR PTR pt..

[C언어] 유니온 union 열거형 enum

1. 유니온(union) 1) 선언과 사용방법에 있어서는 구조체와 동일하다. 2) 메모리 할당 방식에서 구조체와 차이가 있다. > 멤버중에서 가장 큰 자료형의 크기로 메모리가 할당 > 멤버 변수들이 동일한 기억공간에 중복되어 할당 3) 예약어 union을 사용한다, ex) union data{ char ch; int num; }; cf) struct data{ char ch; int num; }; 2. 열거형 1) 사용자가 필요에 의해서 만들어 사용하는 자료형 2) 예약어 enum을 사용 3) 열거형으로 선언된 변수는 집합에 포함되는 상수값만을 갖게된다. 4) 처음에 기술된 열거상수는 0 을가지고 차례로 1씩 증가한다, ex) enum exam_{a,b,c,d,e}; exam_ test; --------..

[c언어] c언어의 장점

1)전산 이론 및 실무 적용상에 절대적으로 필요한 제어 구조, 자료 구조 및 연산자를 충 분히 갖추고 있는 현대식 언어이다. 2)하향식 설계(top-down design), 구조적 프로그래밍(structured programming) 3)컴퓨터의 기능을 최대한도로 이용할 수 있는 효율적인 언어이기 때문에 프로그램을 간결하게 작성하여 신속하게 수행 할 수 있다. 4)시스템 간에 호환성이 매우 높다. 즉 어떤 시스템에서 사용되던 C프로그램을 수정없 이 또는 약간의 수정으로 다른 시스템에서도 실행시킬 수 있다. > 이식성이 뛰어 나다. 5)고급 프로그래밍 언어와 어셈블리의 장점을 취한 중간 수준의 시스템 프로그래밍 언어 이다. (UNIX, MS-DOS, DBASEⅢ+등을 작성) 6) 문법이 간결하다. ----..