본문 바로가기
728x90

프로그래밍 언어/C, C++ 다양한 예시들9

[C 예제] 단어 카운트 입력을 읽고 카운트한 단어의 수를 보고하는 프로그램을 만들려고 한다. 이때, 문자 수, 라인 수, 그리고 단어 수를 카운트 할 수 있어야 한다. 1. 입력과 프로그램의 종료는 어떻게 다룰 것인가? a. 입력: getchar()함수를 이용 b. 프로그램의 종료: 약속된 특정한 문자를 입력할 시, 프로그램이 종료되도록 함 2. 문자 수, 라인수, 단어 계산하는 방법 a. 문자 수 계산: 매 루프 사이클 마다 카운터를 증가시킴 b. 라인 수 계산: 만약 입력이 개행문자이면, 라인 카운트를 증가시킴 c. 단어 계산 - 문제를 단순히 하기 위해, 화이트 스페이스가 포함되어있지 않은 문자들의 한 시퀀스를 단어로 정의 - 단어는 화이트 스페이스가 아닌 문자에서부터 다음 화이트 스페이스 문자까지이다. - 플래그를 0 .. 2022. 3. 24.
[C/C++] 최소값 선택 사실 엄청 간단한 함수이긴 하지만, 두 번째 예시를 기록하고 싶어서 작성한다. 1. 첫번째 예시 int mininum(int n, int m){ if (n 2022. 3. 23.
[C/C++] 두 수를 교환하는 함수 #include void inter_change(int *u, int *v); int main(void){ int x = 5, y = 10; printf("교환 전: x = %d, y= %d\n", x, y); inter_change(&x, &y); printf("교환 후: x = %d, y= %d\n", x, y); } void inter_change(int *u, int *v){ int temp; temp = *u; *u = *v; *v = temp; } NOTE 함수에 x와 y의 주소를 전달함으로써, inter_change()가 그 변수들에 접근할 수 있게 한다. 포인터와 간접 연산자 *를 사요함으로써 함수는 각각의 주소에 저장되어있는 값들을 구하고 변경할 수 있다. 2022. 3. 22.
[C/C++] 대화식 입력의 예제 1. scanf() 및 while() 함수 이용 while(scanf("%ld", &num) == 1){ /*루프에서 처리할 동작들*/ } • 프로그램이 정상적으로 입력을 받았는지 확인하기 위해서 scanf()를 사용함 a. scanf()의 리턴값: 성공적으로 읽은 항목의 수 - 따라서, 하나의 정수를 읽는데 성공한다면, scanf()는 1을 리턴함 - EOF: 만일, scanf()가 파일의 끝을 만나거나 하드웨어적인 문제를 만나면 EOF를 반환한다. 2022. 3. 19.
[C/C++] 메뉴 선택 방식 목적 1. 사용자가 프로그램의 특정한 선택 사항 중 하나를 선택하도록 함 2. 가능한 문제점 - 사용자가 프로그램의 지시대로 따를 때, 프로그램이 부드럽게 넘어가도록 만드는 것 - 사용자가 지시대로 따르지 않을 때에도 프로그램이 부드럽게 넘어가게 하는 것 Pseudo code 1. 선택을 얻는다. 2. 그 선택이 'q'가 아닌 동안 - 원하는 선택으로 이동하여 지정된 작업을 수행 - 다음 선택을 얻음 NOTE 1: 메뉴를 반복적으로 접근하도록 하기 위해, while 문을 이용 NOTE 2: 수행할 작업들은 switch-case 문으로 해결 예시 1) NOTE 1: get_choice() 함수 - 'a, 'b', 'c', 'q' 값만을 리턴할 수 있도록 정의 - Enter를 누를 때마다 생성되는 개행문자를.. 2021. 8. 24.
[CUDA] 데이터 복사 예제 문제 해당 문제에선, CUDA에서 데이터를 전송하는 것을 연습한다. 이때, 1) 호스트 → 디바이스 2) 디바이스 → 디바이스 3) 디바이스 → 호스트 로 각각 데이터들을 전송하는 방법을 확인한다. 1. 크기가 5인 배열을 각각 호스트에서 2개, 디바이스용 2개를 만들아라. - host에서의 배열: host_A, host_B - device에서의 배열: device1_A, device2_A 2. host_A의 배열에 값을 할당하라. 3. 할당된 host_A의 값을 device1_A로 복사하라. - 이때, device1_A에 할당된 값을 출력한다. - 출력 후, 각각의 배열의 원소에 1을 더한다. 4. device1_A의 값들을 device2_A로 복사하라. - 3.에서와 마찬가지로 device2_A에도 .. 2021. 8. 20.
[C 언어] 텍스트 파일의 총 개행 수 구하기 아래와 같이 grade.txt와 같은 텍스트 파일이 있다고 하자. 이때, 해당 파일의 총 개행 수를 구해보자. 파일: grade.txt 0001 Tommy 22 A 0002 Grace 25 B 0003 Landau 53 A 0004 Tim 19 A 0005 Einstien 66 D 0006 Newton 100 A 0007 Hawking 50 C 0008 Feynman 20 B 0009 Bohr 35 A 코드 #include #include int main(void){ int count_line = 0; char *f_name = "./grade.txt"; char tmp; FILE *open_file; open_file = fopen(f_name, "r"); while(fscanf(open_file, ".. 2021. 2. 6.
[C 언어] 2차원 동적 배열 만들기 1차원 동적 배열을 만드는 것은 단순히 다음과 같이 malloc()함수를 이용하면 된다. ex) 만약 사용자로부터 임의의 정수를 받은 후, 그 수의 크기에 해당하는 배열을 만든다고 가정을 하자. int input_n; scanf("%d", &input_n); int *array = (int *)malloc(sizeof(int) * input_n); • (int *)malloc(sizeof(int) * input): int 형의 input_n 칸짜리 배열을 메모리에 할당 후, 해당 주소를 반환 2차원 배열을 동적으로 할당하는 경우, 아래와 같이 크게 두 가지의 이슈가 있다. • 배열의 원소가 인접해야하는지 • 배열이 가변적이어야 하는지 2차원 동적 배열 만들기 ※ 2차원 동적 배열 만들기 요약 (1) 이중.. 2021. 1. 31.
[C 언어] 계층 구조의 하위 디렉토리 생성 1. Unix/Linux OS Unix계열의 환경에서 C언어로 디렉토리를 만드는 경우에 mkdir() 함수를 이용한다 • Prototype: int mkdir (const char *dirname, mode_t mode) • 헤더 파일: • *dirname: 생성할 디렉토리의 경로 및 이름 • mode: 접근 권한 지정* • 반환값 (1) 0 : 디렉토리를 정상적으로 생성함 (2) -1: 디렉토리를 생성 실패 - 만들려는 폴더가 이미 존재할 경우: errno → EEXIST - 폴더가 부정확한 경우: errno → ENOENT 2. Windows 윈도우 계열에서도 마찬가지로 동일한 함수인 _mkdir()을 이용해서 디렉토리를 만든다. 하지만, 헤더파일이 다르다. (1) mkdir()의 헤더 파일: (2).. 2021. 1. 30.
728x90