C 13

[C/C++] atan2 함수로 각도 구하기 (극 좌표계)

직각 좌표계? 극 좌표계?평면 상에서 어떤 점의 위치 또는 원점에 대한 상대적 위치를 나타내야 한다고 할 때 우리는 좌표계를 이용한다그 좌표계를 표현하는 방법은 대표적으로 2가지가 있다첫번째로 원점으로부터의 수평 거리와 수직 거리를 이용하여 위치를 표현하는 직각 좌표계(rectangular coordinates)가 있다그리고 원점으로부터의 거리와 수평축으로부터의 각도를 이용하여 위치를 표현하는 극 좌표계(polar coordinates)가 있다 수평축으로부터의 각도 구하기직각 좌표계는 고등수학과정에서 많이 다루므로 극 좌표계를 프로그램으로 구현해보자어떤 한 점 A가 직각 좌표계에서 x, y로 표현된다고 가정한다원점으로부터의 거리는 피타고라스의 정리로 구할 수 있다그렇다면 수평축으로부터의 각도를 어떻게 구..

[C/C++] 포인터와 const

포인터에 const를 사용해?const라는 키워드는 포인터에 두 가지 방법으로 사용된다첫 번째 방법은 상수 객체를 지시하는 포인터를 만드는 것이다상수 객체를 지시하는 포인터를 사용하여 그 포인터가 지시하는 값을 변경할 수 없다두 번째 방법은 포인터 자신을 상수로 만드는 것이다상수 포인터를 사용하여 그 포인터가 지시하는 장소를 변경할 수 없다 상수 객체를 지시하는 포인터 int age = 39; const int *pt = &age; pt += 1; //pt는 const int를 지시하고 있으므로 사용할 수 없다 cin >> *pt; //사용할 수 없다 *pt = 20; //pt는 const int를 지시하고 있으므로 사용할 수 없다 age = 20; //age는 const로 선언되지 않았기 때문에 사용할..

[C/C++] string 문자열 비교 ==? compare? strcmp?

문자열 비교값을 비교할 때 보통 == 연산자를 이용하여 동일 여부를 알아낸다하지만 문자열의 경우 == 연산자를 사용하면 원치 않은 결과를 가져올 수도 있다이는 값은 같을지라도 값이 저장된 메모리 주소가 다르기 때문이다char 배열을 이용한 문자열의 경우 변수는 주소를 가리키므로 == 연산자를 사용하지 않고 strcmp() 함수를 사용한다하지만 C++에서는 string 문자열일 경우 == 연산자를 사용할 수 있다이 이유는 연산자 오버로딩에 있다 strcmp(), compare()char 배열 형식의 문자열을 비교할 때는 strcmp() 함수를 사용한다strcmp( string1, string2 )라고 가정하자위 값이 0보다 작을 경우 string1이 string2보다 사전적으로 앞에 있다값이 0일 경우 s..

[C/C++] error C2872, 모호한 기호입니다

error C2872 #include using namespace std; ... bool is_empty(LinkedListType *list) { return list->head == NULL ? true : false; } void delet(LinkedListType *list, int pos) { if ((!is_empty(list)) && (pos >= 0) && (pos length)) { ListNode *p = get_node_at(list, pos - 1); ListNode *removed = get_node_at(list, pos); remove_node((&list->head), p, removed); list->length--; } } ... 위와 같은 코드를 실행하..

[C/C++] error C4996: 'strcpy' 'strcat' 오류 해결

error C4996cstring을 지시한 후 strcpy(), strcat()을 사용할 때 다음과 같은 컴파일 오류가 생길 수 있다 error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNI..

[C/C++] strlen 함수, 문자열의 길이

문자열(string)이란메모리에 바이트 단위로 연속적으로 저장되어 있는 문자들을 말한다두 가지 방법으로 문자열을 처리한다첫 번째는 char형의 배열을 이용한 방법이고 string 클래스 라이브러리를 이용한 방법이 있다char형의 배열을 이용할 때 문자열은 반드시 마지막에 '\0' 널 문자를 포함한다 strlen(string) strlen(string) 을 이용하여 문자열의 길이 값을 반환할 수 있다이를 사용하기 위해서는 cstring 헤더 파일을 지시해야 한다#include strlen() 함수는 배열의 전체 크기가 아니라 배열에 저장된 문자열의 크기를 반환한다 char name[15] = "C++Basic" 일 때C + + B a s i c \0name 의 문자열의 길이는 15도 아니고 9도 아닌 8이다

[C/C++] fflush 함수

fflush 함수함수의 인자에 해당하는 입출력 버퍼를 지울 때 사용한다내용을 입력하고 ENTER 를 입력할 때 '\n' 는 아래 그림처럼 버퍼에 남게 된다이러한 경우를 없애기 위해서 fflush(stdin) 명령어를 사용한다보통 반복문 끝에 사용한다 단, fflush 는 버퍼에 있는 데이터를 그냥 지우는 것이 아니라 출력하고자 하는 곳으로 전송한다입력버퍼를 비우기 위해서는 버퍼에 있는 데이터를 읽어들이면 된다 void insert_line(LinkedListType *buffer) { int position; char line[MAX_CHAR_PER_LINE]; element p; printf("입력행번호를 입력하세요: \n"); scanf("%d", &position); printf("내용을 입력하세요..

[C/C++] 동적 메모리 할당 malloc

동적 메모리 할당?동적 메모리 할당(dynamic memory allocation)이란프로그램이 실행 도중에 동적으로 메모리를 할당받는 것을 말한다 이와 반대로 정적 메모리 할당이란 개념도 있다프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는다정적으로 할당받으면 메모리의 크기는 프로그램의 실행 도중에 크기가 변경될 수 없다int number = 10; 과 같은 경우이다 동적 메모리 할당의 방법은 다음과 같다 #include int *pi; pi = (int *)malloc(sizeof(int)); ... free(pi); malloc.h 헤더파일을 지시문으로 불러오고malloc(int size) 함수를 사용하여 size 바이트(위 경우 4 바이트) 만큼의 메모리 블록을 할당한다새로운 메모리 ..

728x90