Language/C, C++

Language/C, C++

    [C] [포인터] 배열 원소 값 뒤집기

    1. 예제 내용 #define COUNT 10 double arr[COUNT] = { 1.2, 3.1, 4.3, 4.5, 6.7, 2.3, 8.7, 9.5, 2.3, 5.8 }; 실수형 배열에 대해서 원소들을 역순으로 초기화하는 reverse_array 함수 생성, 크기가 10인 double 배열을 reverse_array 함수에 적용하여 출력 2. 출력 결과 Before : 1.2 3.1 4.3 4.5 6.7 2.3 8.7 9.5 2.3 5.8 After : 5.8 2.3 9.5 8.7 2.3 6.7 4.5 4.3 3.1 1.2 3. 정답 코드 #include #define COUNT 10 double reverse_array(double* arr) { int l = 0; // 배열 왼쪽 첫 원소의 위..

    [C] rgb 값을 입력 받아 색상 코드 출력

    컴퓨터 시스템에서 색상을 표현하는 방법 중에 RGB 표기법은 red, green, blue에 8비트씩을 사용해서 색상을 표현하므로 24비트 트루컬러라고 한다. 컴퓨터 시스템에서는 32비트 데이터의 최하위 바이트부터 red, green, blue의 순서로 색상 정보를 저장하고 최상위 바이트는 사용하지 않고 0으로 채운다. 0~255사이의 값을 red, green, blue의 순서로 3개 입력받아서 RGB 색상을 만들어서 출력하는 프로그램을 작성하시오. RGB 색상을 출력할 때는 바이트 단위로 값을 알아보기 쉽도록 16진수로 출력한다. 조건 : red, green, blue 값을 입력받을 때 0~255 범위의 값을 입력받아야 한다. 만약 255보다 큰 값을 입력하면 오버플로우로 처리하게 구현하시오. 즉, 예..

    [C] 배열의 합, 평균, 최댓값, 최솟값 출력 : 배열 알고리즘

    아래 소스코드는 임의의 10개의 배열 원소를 입력받아 합, 평균, 최댓값, 최솟값 4가지를 출력하는 알고리즘으로 구성되어 있습니다. #include int main(void) { int arr[10]; int max = 0; // 최대값이 저장될 변수 int min = 100; // 최소값이 저장될 변수 (단, 변수에 저장 될 값은 배열 원소값보다 더 큰 값) int sum = 0; // 총 합이 저장될 변수 float avg = 0.; // 평균값이 저장될 변수 // arr input process for (int i = 0; i > input %dth number : ", i + 1); scanf_s("%d", &arr[i]); } // max process ..

    [C] 두 점 사이의 거리 출력 : 함수 응용

    아래 소스코드는 두 점의 좌표를 각각 입력하여 함수를 통해 두 점 사이의 거리를 출력하도록 구성되어 있습니다. 두 점 사이의 거리를 구하기 위해서는 제곱근과 거듭제곱을 사용해야 하기 때문에 math.h 헤더를 통해 수학함수를 열어줍니다. #include #include double get_distance(double, double, double, double); int main(void) { double x1, y1, x2, y2; printf("첫 번째 점의 좌표를 입력하시오(x,y) : "); scanf_s("%lf %lf", &x1, &y1); printf("두 번째 점의 좌표를 입력하시오(x,y) : "); scanf_s("%lf %lf", &x2, &y2); printf("두 점 사이의 거리 =..

    [C] Max / Min 출력 : 함수 응용

    아래 소스코드는 임의의 정수형 입력값 5개를 받아서 함수를 통해 최댓값과 최솟값을 출력하도록 구성되어 있습니다. #include int max(int, int, int, int, int); int min(int, int, int, int, int); int main(void) { int a, b, c, d, e; scanf_s("%d %d %d %d %d", &a, &b, &c, &d, &e); printf("max : %d\n", max(a, b, c, d, e)); printf("min : %d\n", min(a, b, c, d, e)); return 0; } int max(int a, int b, int c, int d, int e) { int max_value = a; // 제일 큰 값을 a로 가..

    [C] 1에서 100 사이의 3의 배수의 합 : for, while, do while 반복문의 이해

    #include int main(void) { int i, sum = 0; // for for (i = 1; i

    [C++] 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.

    위 에러가 발생하는 이유는 입력한 함수가 다른 설정 이름을 갖거나 안전하지 않은 경우, 변형이 있는 경우, 구식인 경우에 해당하기 때문입니다. 오류 메세지를 보면 사용되지 않는 함수 또는 전역 변수를 대체할 수 있는 safe_version 항목을 사용하길 제안해주고 있는데, 현재 사용한 함수의 경우 strcpy_s, strcat_s 가 그 예시입니다. 따라서 strcpy_s(), strcat_s() 를 사용하면 오류가 해결됩니다. 또는 헤더 파일 입력란에 #define CRT_SECURE_NO_WARNINGS 추가하여 안전성을 무시하고 컴파일 하는 방법이 존재합니다. 이 경우, 소스코드를 실제 프로젝트가 아닌 공부 목적으로만 사용하는 경우라면 얼마든지 사용해도 무방합니다.

    [C++] C4996 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getch. See online help for details.

    POSIX 함수 이름인 getch 대신 ISO C++ 호환 네임인 _getch 를 사용하면 정상적으로 컴파일 할 수 있습니다. getch 이후 따라오는 putch 또한 동일하게 '_' 를 사용해줍니다.

    [C] E0144 "const char *" 형식의 값을 사용하여 "char" 형식의 엔터티를 초기화할 수 없습니다

    문자열 리터럴을 사용하기 위해서 char 형태의 변수를 선언했을 때 E0144 에러가 발생한다. 에러의 내용은 "홀수"라는 문자열은 const(상수)값인데 변수에 그 값을 집어넣으려고 하니 에러가 발생한다는 것이다. 위 에러의 발생 원인을 MSDN에서는 다음과 같이 설명한다. "C에서는 문자열 리터럴이 char의 배열이지만, C++에서는 const char의 배열이다." 즉, char(혹은 char *)에 문자열 리터럴을 담는 방식은 C 방식이며, C++ 에서는 잘못된 코딩방법이기 때문에 위와 같은 오류가 발생하는 것이다. 해결방법 1. pointer가 아닌 array 형식으로 선언 1 char s1[] = "aa"; cs 2. (char *) 형식으로 형변환(casting) 1 char *s1 = (c..

    [C] 비트 시프트 연산의 원리

    2진수 형태로 저장되어 있는 값들을 왼쪽()으로 지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 반으로 줄어드는데, 이를 비트 시프트 연산이라고 합니다. 왼쪽 비트시프트()가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가됩니다. 범위(32비트)를 넘어서 이동되는 비트는 삭제됩니다. int a=10; printf("%d", a > 1); // 10을 반으로 나눈 값인 5 가 출력된다. printf("%d", a > 2); // 10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다. #include int main(void) { int a=10; printf("%d\n", a