반응형

언어 자료구조 알고리즘 1251

[C언어] 74. 구조체

74. 구조체 프로그래밍 언어에서는 공통적으로 사용할 기본적인 형식들을 제공하죠. 그리고 프로그램 목적에 맞게 개발자가 형식을 정의하여 사용할 수 있는 문법을 제공하고 있어요. 이러한 문법을 사용자 정의 형식이라 불러요. C언어에서 개발자가 형식을 정의하여 사용하는 문법에는 구조체, 공용체, 열거형이 있어요. 구조체와 공용체는 여러 개의 멤버를 하나의 형식으로 묶어 사용할 수 있게 정의하는 문법이예요. 그리고 열거형은 사용할 수 있는 값들을 열거하는 형식이죠. 구조체는 C언어에서 가장 많이 사용하는 사용자 정의 형식이예요. 여러 개의 데이터를 하나의 형식으로 묶어서 정의할 수 있어요. 학생의 번호, 이름을 구조체로 정의하면 학생 구조체 변수 하나만 선언해서 번호와 이름을 사용할 수 있어요. 구조체에 정의..

[C언어] 73. 문자열 정리하기

73. 정리하기 68. 문자열69. 문자열 사용 기초70. 문자열 길이와 strlen 함수71. 문자열 비교와 strcmp 함수72. 문자열 복사 1. 문자열 길이를 구하는 함수를 만드시오. (strlen 함수와 같은 기능을 하는 함수 만들기) 2. 문자열 비교하는 함수를 만드시오. (strcmp 함수와 같은 기능을 하는 함수 만들기) 3. 문자열 복사하는 함수를 만드시오. (strcpy_s 함수와 같은 기능을 하는 함수 만들기) [정답] 디딤돌 C언어 73. 문자열 정리하기

[C언어] 72. 문자열 복사

72. 문자열 복사 C언어에서 문자열을 char 형식을 원소로 하는 배열이나 포인터를 사용하죠. 특히 문자열을 변경하는 작업을 하려면 배열을 사용한다고 했어요. 그런데 C언어에서 배열 이름은 포인터 상수로 취급하여 대입 연산 좌항에 올 수 없어요. C 언어에서 문자열 데이터를 복사할 때는 다음 함수를 사용할 수 있어요. char *strcpy(char *dest, const char *src); char *strcpy(char *dest, size_t size, const char *src); char *strncpy(char *dest, const char *src, size_t n); char *strncpy(char *dest, size_t size, const char *src, size_t n)..

[C언어] 71. 문자열 비교와 strcmp 함수

71. 문자열 비교와 strcmp 함수 C언어에서 기본 형식은 비교 연산으로 값의 크기를 비교할 수 있죠. 그런데 배열은 메모리 주소를 값으로 갖기 때문에 비교 연산을 하면 메모리 주소를 비교해요. 개발자는 문자열의 내용을 비교하길 원하는데 메모리 주소를 비교하기 때문에 원하지 않는 결과가 나오지 않아요. 이는 프로그램 버그를 만드는 것이라 주의하세요. ◈ 비교 연산으로 문자열을 비교했을 때의 버그 #include #include #define MAX_NAME_LEN 50 int main() { char name1[MAX_NAME_LEN+1] = "hello"; char name2[MAX_NAME_LEN+1] = "hello"; if(name1 == name2) { printf("%s와 %s는 같다.\n..

[C언어] 70. 문자열 길이와 strlen 함수

70. 문자열 길이와 strlen 함수 C 컴파일러에서는 문자열 데이터에 관한 여러가지 함수를 제공하고 있어요. 이러한 함수들을 사용하려면 string.h 파일을 포함하세요. #include strlen 함수는 문자열 길이를 구하는 함수예요. size_t strlen(const char *str); 입력 인자로 문자열을 const char * 형식 변수로 받고 문자열 길이를 size_t 형식으로 반환해요. const char * 형식으로 받는 이유는 전달받은 문자열의 내용을 바꾸지 않겠다는 의미예요. 그리고 반환 형식인 size_t 형식은 부호없는 정수형으로 unsigned int 와 같은 표현이예요. 실제 헤더 파일에는 다음처럼 size_t를 typedef 문으로 정의하고 있어요. typedef uns..

[C언어] 69. 문자열 사용 기초

69. 문자열 사용 기초 C언어에서 문자열은 아스키 코드의 나열이예요. 특히 아스키 코드 값이 0인 문자를 널문자(‘\0’)라고 부르는데 문자열은 널문자를 만나기 전까지의 아스키 코드 나열이예요. 따라서 문자열을 char 형식 원소 배열을 선언할 때 널문자를 포함하여 원소 개수를 정하세요. 이 책에서는 문자열을 배열로 관리할 때 원소 개수를 나타내는 부분을 MAX_NAME_LEN+1 처럼 표현하고 있어요. #define MAX_NAME_LEN 50 char name[MAX_NAME_LEN+1] = {'a','b','c'}; 그리고 C언어에서는 문자열 리터럴 상수를 초기화 구문에서도 사용할 수 있어요. #define MAX_ADDR_LEN 100 char addr[MAX_ADDR_LEN+1] = "제주도 ..

[C언어] 68. 문자열

68. 문자열 프로그램을 작성하다 보면 문자열 데이터를 사용할 때가 많아요. 대부분의 프로그래밍 언어에서는 문자열을 관리하는 별도의 형식을 제공하지만 C언어는 문자열 형식을 제공하지 않아요. 그렇다고 C언어에서 문자열 데이터를 표현할 수 없는 것은 아니예요. C언어에서는 문자열을 char 형을 원소로 하는 배열이나 char 형을 원소로 하는 포인터 형식으로 문자열을 표현할 수 있어요. 그리고 문자열 데이터를 표현할 때 쉽게 표현할 수 있게 쌍 따옴표를 사용하여 문자열을 표현할 수 있어요. #define MAX_NAME_LEN 50 char name[MAX_NAME_LEN + 1] = "hello"; const char *str = "yahoo"; char 형식 원소로 배열을 선언하면 문자열을 구성하는 문..

[C언어] 순차 정렬, 버블 정렬, 선택 정렬, 삽입 정열, 쉘 정렬, 퀵 정렬, 병합 정렬, 힙 정렬)

순차 정렬(Sequential Sort) 알고리즘 이번에는 반복적인 방법으로 해결하는 순차 정렬(Sequential Sort) 알고리즘을 살펴볼게요. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 알고리즘을 말해요. 정렬 알고리즘은 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘이 필요합니다. 그리고 수행 후에는 배열 내의 자료들은 원하는 순서로 배치한 상태여야 합니다. 순차 정렬은 맨 앞에서부터 제일 작은 원소를 배치하게 만들어 나가는 알고리즘이예요. 이를 위해 배치할 자리에 있는 원소를 뒤쪽에 있는 원소들과 비교하면서 작은 것을 발견하면 배치할 위치의 원소와 교환해요.순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 반복(i:=..

[C++] OOP 프로그래밍 실습 - 상세 구현하기

10.5.3 상세 구현하기 상세 구현하기에서는 시나리오를 보면서 지금 비어 있는 각 함수의 내부를 구현해 나가고 필요한 멤버가 있다면 추가하면서 프로그램을 작성해 봅시다. 제일 먼저, 프로그램이 시작할 때 이 에이치 나라가 생성되고 초기화, 사용자 명령에 따른 동작, 종료화 과정을 수행시키는 부분을 해 봅시다. C++언어로 작성하는 콘솔 응용 프로그램은 main이라는 진입점 함수에서 시작한다는 것을 잘 알고 있습니다. 하지만 main은 특정 클래스 스코프가 아니며 EHLand는 논리적으로 보았을 때 하나의 개체만 생성이 되어 실행되어야 할 것입니다. 이를 위해 여기에서는 EHLand의 생성자와 소멸자의 접근 수준은 private으로 막아놓겠습니다. 대신 접근 수준이 public인 정적 메서드 Start를..

[C++] OOP 프로그래밍 실습 - 접근 권한이 public인 멤버 메서드

10.5.2 접근 권한이 public인 멤버 메서드 관계에 따른 헤더 파일을 추가하였으면 시퀀스 다이어그램들을 보면서 접근 권한이 public인 멤버 메서드들을 추가해 보도록 합시다. 우리는 설계 단계의 시퀀스 다이어그램에서 다른 개체의 메서드를 호출하는 것에 대해서만 약속을 하였는데 호출을 당하는 개체에는 해당 시그니쳐를 갖는 멤버 메서드가 public으로 되어 있어야 할 것입니다. 초기화 시퀀스를 보면 UnitFactory, ComeBackHelper, Village, Hall을 생성하고 있습니다. 이들의 생성자 메서드는 접근 권한이 public으로 노출되어야 할 것입니다. 시퀀스 다이어그램을 보시면 UnitFactory의 생성자는 기본 생성자이고 ComeBackHelper의 생성자는 EHLand *..

반응형