일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- C
- 마이크로소프트
- 실습
- linux
- Time
- tips강좌
- 도움말
- 김성엽
- 포트폴리오
- do it c
- visual
- MyTread
- 미가공
- win32
- Tipsware
- 정보처리기사
- MFC 예제
- 충무창업큐브
- 정처기 독학
- MFC
- ListBox
- 핵심 요약
- mysql
- 유료강좌
- 별찍기
- MyThread
- C++
- SSG
- mfc 실습
- C언어
- Today
- Total
목록do it c (17)
History

차원이란 무엇일까? 수학에서 이야기하는 차원은 좌표 및 공간에 관한 개념이다. 프로그래밍에서 이야기하는 차원은 데이터의 종속성에 관한 개념이다. 이제부터 프로그래밍과 관련한 차원에 대해 설명하겠다. 배열은 왜 필요할까? 그냥 자신이 필요한 만큼 변수를 선언하면 배열이 굳이 필요한가?라는 질문에 나는 이렇게 대답할 수 있다. 만약 마트에서 a, b, c 물건을 3개씩 구매하려고 하는데, 이 물건들을 카테고리 별로 분류하지 않고, 이곳저곳에 놓여있다면, 손님은 물건을 사는데 시간이 많이 걸리고 원하는 제품을 정확히 찾기도 어려울 것이다. 코드로 비유하면 아래와 같다. int a1; char b1; int a2; float c1; int a3; int a4; char b2; int a5; float c2; c..
c++은 사용자에게 입력을 받을 때 cin객체를 이용하여 입력을 받는다. #include using namespace std; int main() { int data = 0; cout > data; //입력 cout

아래와 같이 프로그래밍을 하다가 귀찮아서 변수명 대충 짓고 나중에 헷갈려서 각 변수를 의미 있게 바꾸려고 하는데 코드가 복잡하게 꼬여있어서 감당이 안될 때 어떻게 해야 할까? int data1,data2,data3; int result1,result2,result3; int num1,num2,num3; 변수명을 안 바꾸고 의미 있게 변수명을 바꾸려면 매크로 함수를 사용해야 한다. 매크로 함수는 #을 사용할 때는 문자열로 처리되지만 #을 2번 사용해서(##) 처리하면 단순 구분자로 사용된다. 이제 단순 구분자로 바뀌는 특성을 이용해 나름대로 변수를 치환해보자. #define LO_STATE(data) data##1 위와 같이 ##을 두 번 적고 1을 적으면 data와 1을 구분해준다. main에서 변수명이..
일반적으로 우리가 int 변수를 통해 숫자를 printf로 출력할 때 아래와 같이 코드를 작성한다. #include int main() { int num = 10, data = 5; printf("num=%d\n",num); printf("data=%d\n",data); return 0; } 그러나 극단적인 예시로 우리가 출력해야 할 int 변수가 10개, 20개까지 늘었다. 그러면 우리는 printf함수를 20번을 적어야 하고, printf함수 안에 어떤 변수가 출력되는지 알려주는 문자열도 각 변수에 맞게 바꿔줘야 한다. 얼마나 귀찮은 일인가. 이러한 불편함을 줄여줄 수 있는 방법은 #define(매크로 함수)을 이용하는 것이다. 아래 코드를 보자. #include #define ShowVar(x) p..

중복 없는 난수 생성하기 두 번째 방법이다. 아래 코드를 보자. #include #include #include int main() { int arr[10]; //난수가 저장될 배열 int count = 0; //난수가 확정된 숫자의 개수 int value, i; //반복문에서 사용할 변수 srand((unsigned int)time(NULL)); //난수 발생의 기준값 초기화 while (count
"12@3s4#5$6%7^8p9" 위와 같이 숫자와 문자가 같이 섞여있는 문자열이 있다. 이 문자열에서 숫자를 제외한 다른 문자를 제외하고 123456789라는 숫자를 출력하고 싶으면 어떻게 해야 할까? 이 경우에는 atoi함수도 사용할 수 없다. 왜냐하면 atoi함수는 문자로 된 숫자를 int 형식으로 바꿔주는 함수이지만 이렇게 숫자 중간에 다른 문자가 껴있으면 숫자로 표시된 12만 정수로 바뀌고 그 뒤에 나온 @문자를 만나는 순간 변환을 중단하고 함수를 빠져나오도록 설계되어있기 때문이다. 그럼 atoi를 사용하지 않고 숫자와 문자가 섞여있는 문자열을 정수 형태로 분리해서 값을 대입하는 코드를 구현하면 아래와 같다. #include int main() { char *p_arr="12@3s4#5$6%7^..
이번에 실습한 내용은 +버튼과 -버튼을 마우스로 눌러서 숫자의 크기를 늘리고 줄이는 실습이다. 이번 실습은 MFC클래스에서 CButton클래스를 추가해서 버튼을 0.5초 이상 누르고 있으면 0.1초마다 숫자가 자동으로 늘어나는 실습을 진행했다. CButton클래스에서 LBUTTONDOWN과 LBUTTONUP, TIMER를 넣었다. LBUTTONDOWN에서는 SetTimer로 1번을 부여하고 0.5초를 세팅한다. 그리고 TIMER함수에서 1번에 들어왔으면 바로 KillTimer를 하고 바로 SetTimer를 호출하여 2번을 0.1초를 세팅한다. 그 후 SendMessage로 메인 dlg.cpp에 메시지를 보낸다. 메인 dlg에서는 가상함수에서 OnCommand를 추가해주고 wParam으로 컨트롤 ID를 비..

이번에는 복습 겸 간단한 실습을 진행해본다. 타이머 함수를 이용해 크기와 위치가 랜덤인 원들이 계속 크기가 줄어들면서 새롭게 생기는 프로그램을 만들어본다. 우선 구조체를 이용하여 원의 크기를 잡아줄 x, y 그리고 반지름인 r을 설정한다. 변수 r을 설정하는 이유는 Rectangle함수 같은 경우는 왼쪽 위의 좌표와 오른쪽 아래의 좌표만 알면 되지만 Ellipse함수는 Rectangle의 내접하는 원을 구하는 것이기 때문에 반지름 r을 이용해서 좌표를 구해야 한다. OnInitDialog에서 랜덤함수를 이용해서 반복문으로 값을 구조체에 대입하고 Onpaint에서 원을 출력한다. 그러면 아래와 같은 그림이 출력된다. 흰 색 원들이 무작위로 생성되었지만 뭔가 밋밋하다. 각각 원에 색깔도 입히기 위해 구조체의..